Страница 1 из 1
Yii2 Url Mnager
Добавлено: 2019.09.02, 21:42
hovhannes_ab
Здравствуйте . Как можно разделить 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
Сейчас конфликт всегда принимает первый запрос
Re: Yii2 Url Mnager
Добавлено: 2019.09.02, 22:47
yiiliveext
Если я правильно понял вопрос, поскольку в нем присутствует противоречие.
Код: Выделить всё
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<param:param1>' => 'site/test',
'<param:param2>' => 'site/test',
],
],
Код: Выделить всё
public function actionTest($param)
{
return 'My param: ' . $param;
}
Будет возвращать для http:\\mysite.com\param1 текст 'My param: param1', а для http:\\mysite.com\param2 текст 'My param: param2'
Re: Yii2 Url Mnager
Добавлено: 2019.09.02, 23:11
hovhannes_ab
я там забил написать что 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
],
Re: Yii2 Url Mnager
Добавлено: 2019.09.02, 23:16
hovhannes_ab
когда в URI попадает один параметр он всегда отправляет запрос первый action ,
Re: Yii2 Url Mnager
Добавлено: 2019.09.02, 23:17
yiiliveext
Ну тогда разные для разных параметров укажите
Код: Выделить всё
'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
Добавлено: 2019.09.02, 23:24
ElisDN
Через создание классов правил.
Re: Yii2 Url Mnager
Добавлено: 2019.09.02, 23:28
hovhannes_ab
ElisDN писал(а): ↑2019.09.02, 23:24
Через создание классов правил.
По другому такие задачи не можно реализовать?
Re: Yii2 Url Mnager
Добавлено: 2019.09.02, 23:28
hovhannes_ab
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;
}
Так не получится
Re: Yii2 Url Mnager
Добавлено: 2019.09.02, 23:30
yiiliveext
Тогда ставьте правильно задачу.
Re: Yii2 Url Mnager
Добавлено: 2019.09.02, 23:38
hovhannes_ab
yiiliveext писал(а): ↑2019.09.02, 23:30
Тогда ставьте правильно задачу.
[
'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
],
Напишите на примере этого кода пожалуйста
Re: Yii2 Url Mnager
Добавлено: 2019.09.02, 23:43
yiiliveext
hovhannes_ab писал(а): ↑2019.09.02, 23:38
Напишите на примере этого кода пожалуйста
Покажите экшены.
Re: Yii2 Url Mnager
Добавлено: 2019.09.02, 23:47
hovhannes_ab
public function actionTest($params)
{
echo "action Test";
}
public function actionTest2($params2)
{
echo "action Test2";
}
Re: Yii2 Url Mnager
Добавлено: 2019.09.02, 23:49
yiiliveext
Какие значения могут принимать $params и $params2
Re: Yii2 Url Mnager
Добавлено: 2019.09.02, 23:51
hovhannes_ab
yiiliveext писал(а): ↑2019.09.02, 23:49
Какие значения могут принимать $params и $params2
(string) test-test-te3tuk
Re: Yii2 Url Mnager
Добавлено: 2019.09.02, 23:54
hovhannes_ab
[
'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 то будет работать
Re: Yii2 Url Mnager
Добавлено: 2019.09.02, 23:55
yiiliveext
Если это произвольная строка, то какая по-вашему должна быть логика распознания?
Re: Yii2 Url Mnager
Добавлено: 2019.09.02, 23:56
hovhannes_ab
там все уникальные
Re: Yii2 Url Mnager
Добавлено: 2019.09.02, 23:59
hovhannes_ab
Параметры строки, но уникальные строки
Re: Yii2 Url Mnager
Добавлено: 2019.09.03, 00:02
yiiliveext
Если их несколько, прописываете прямо в правилах, если их много и/или они распознаются по какому-то признаку, то пишете свой класс правил.
Re: Yii2 Url Mnager
Добавлено: 2019.09.03, 00:03
hovhannes_ab
Ну да осталось только так делать. Спасибо