Yii2 Url Mnager
-
- Сообщения: 40
- Зарегистрирован: 2018.11.18, 13:15
Yii2 Url Mnager
Здравствуйте . Как можно разделить 2 Actions с одним параметром и написать правильный rules чтобы запрос по сайту без параметров опознал разными, без suffix
[
'class' => 'yii\web\UrlRule',
'pattern' => '<params1:[\w-]+>',
'route' => 'test/test-action1',
'suffix' => '',
],
[
'class' => 'yii\web\UrlRule',
'pattern' => '<params2:[\w-]+>',
'route' => 'test/test-action1',
'suffix' => '',
'normalizer' => false
],
www.test.ru/params1
www.test.ru/params2
Сейчас конфликт всегда принимает первый запрос
[
'class' => 'yii\web\UrlRule',
'pattern' => '<params1:[\w-]+>',
'route' => 'test/test-action1',
'suffix' => '',
],
[
'class' => 'yii\web\UrlRule',
'pattern' => '<params2:[\w-]+>',
'route' => 'test/test-action1',
'suffix' => '',
'normalizer' => false
],
www.test.ru/params1
www.test.ru/params2
Сейчас конфликт всегда принимает первый запрос
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Yii2 Url Mnager
Если я правильно понял вопрос, поскольку в нем присутствует противоречие.
Будет возвращать для http:\\mysite.com\param1 текст 'My param: param1', а для http:\\mysite.com\param2 текст 'My param: param2'
Код: Выделить всё
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<param:param1>' => 'site/test',
'<param:param2>' => 'site/test',
],
],
Код: Выделить всё
public function actionTest($param)
{
return 'My param: ' . $param;
}
-
- Сообщения: 40
- Зарегистрирован: 2018.11.18, 13:15
Re: Yii2 Url Mnager
я там забил написать что actions разные
[
'class' => 'yii\web\UrlRule',
'pattern' => '<params1:[\w-]+>',
'route' => 'test/test-action1',
'suffix' => '',
],
[
'class' => 'yii\web\UrlRule',
'pattern' => '<params2:[\w-]+>',
'route' => 'test/test-action2',
'suffix' => '',
'normalizer' => false
],
[
'class' => 'yii\web\UrlRule',
'pattern' => '<params1:[\w-]+>',
'route' => 'test/test-action1',
'suffix' => '',
],
[
'class' => 'yii\web\UrlRule',
'pattern' => '<params2:[\w-]+>',
'route' => 'test/test-action2',
'suffix' => '',
'normalizer' => false
],
-
- Сообщения: 40
- Зарегистрирован: 2018.11.18, 13:15
Re: Yii2 Url Mnager
когда в URI попадает один параметр он всегда отправляет запрос первый action ,
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Yii2 Url Mnager
Ну тогда разные для разных параметров укажите
Код: Выделить всё
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<param:param1>' => 'site/test1',
'<param:param2>' => 'site/test2',
],
],
Код: Выделить всё
public function actionTest1($param)
{
return 'My param: ' . $param;
}
public function actionTest2($param)
{
return 'My param: ' . $param;
}
Re: Yii2 Url Mnager
Через создание классов правил.
-
- Сообщения: 40
- Зарегистрирован: 2018.11.18, 13:15
-
- Сообщения: 40
- Зарегистрирован: 2018.11.18, 13:15
Re: Yii2 Url Mnager
Так не получитсяyiiliveext писал(а): ↑2019.09.02, 23:17 Ну тогда разные для разных параметров укажите
Код: Выделить всё
'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ '<param:param1>' => 'site/test1', '<param:param2>' => 'site/test2', ], ],
Код: Выделить всё
public function actionTest1($param) { return 'My param: ' . $param; } public function actionTest2($param) { return 'My param: ' . $param; }
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Yii2 Url Mnager
Тогда ставьте правильно задачу.
-
- Сообщения: 40
- Зарегистрирован: 2018.11.18, 13:15
Re: Yii2 Url Mnager
[
'class' => 'yii\web\UrlRule',
'pattern' => '<params1:[\w-]+>',
'route' => 'test/test-action1',
'suffix' => '',
],
[
'class' => 'yii\web\UrlRule',
'pattern' => '<params2:[\w-]+>',
'route' => 'test/test-action2',
'suffix' => '',
'normalizer' => false
],
Напишите на примере этого кода пожалуйста
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Yii2 Url Mnager
Покажите экшены.
-
- Сообщения: 40
- Зарегистрирован: 2018.11.18, 13:15
Re: Yii2 Url Mnager
public function actionTest($params)
{
echo "action Test";
}
public function actionTest2($params2)
{
echo "action Test2";
}
{
echo "action Test";
}
public function actionTest2($params2)
{
echo "action Test2";
}
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Yii2 Url Mnager
Какие значения могут принимать $params и $params2
-
- Сообщения: 40
- Зарегистрирован: 2018.11.18, 13:15
Re: Yii2 Url Mnager
(string) test-test-te3tuk
-
- Сообщения: 40
- Зарегистрирован: 2018.11.18, 13:15
Re: Yii2 Url Mnager
[
'class' => 'yii\web\UrlRule',
'pattern' => '<params1:[\w-]+>',
'route' => 'test/test-action1',
'suffix' => '',
],
[
'class' => 'yii\web\UrlRule',
'pattern' => '<params2:[\w-]+>',
'route' => 'test/test-action2',
'suffix' => '',
],
Это написано для того чтобы с URI удалить все и показать только параметры которые отправляются на actions, если добавить для них suffix то будет работать
'class' => 'yii\web\UrlRule',
'pattern' => '<params1:[\w-]+>',
'route' => 'test/test-action1',
'suffix' => '',
],
[
'class' => 'yii\web\UrlRule',
'pattern' => '<params2:[\w-]+>',
'route' => 'test/test-action2',
'suffix' => '',
],
Это написано для того чтобы с URI удалить все и показать только параметры которые отправляются на actions, если добавить для них suffix то будет работать
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Yii2 Url Mnager
Если это произвольная строка, то какая по-вашему должна быть логика распознания?
-
- Сообщения: 40
- Зарегистрирован: 2018.11.18, 13:15
Re: Yii2 Url Mnager
там все уникальные
-
- Сообщения: 40
- Зарегистрирован: 2018.11.18, 13:15
Re: Yii2 Url Mnager
Параметры строки, но уникальные строки
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Yii2 Url Mnager
Если их несколько, прописываете прямо в правилах, если их много и/или они распознаются по какому-то признаку, то пишете свой класс правил.
-
- Сообщения: 40
- Зарегистрирован: 2018.11.18, 13:15
Re: Yii2 Url Mnager
Ну да осталось только так делать. Спасибо