Yii2 Url Mnager

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
hovhannes_ab
Сообщения: 39
Зарегистрирован: 2018.11.18, 13:15

Yii2 Url Mnager

Сообщение 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
Сейчас конфликт всегда принимает первый запрос

yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Yii2 Url Mnager

Сообщение 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'

hovhannes_ab
Сообщения: 39
Зарегистрирован: 2018.11.18, 13:15

Re: Yii2 Url Mnager

Сообщение 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
],

hovhannes_ab
Сообщения: 39
Зарегистрирован: 2018.11.18, 13:15

Re: Yii2 Url Mnager

Сообщение hovhannes_ab »

когда в URI попадает один параметр он всегда отправляет запрос первый action ,

yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Yii2 Url Mnager

Сообщение 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;
}

Аватара пользователя
ElisDN
Сообщения: 5594
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Yii2 Url Mnager

Сообщение ElisDN »

Через создание классов правил.

hovhannes_ab
Сообщения: 39
Зарегистрирован: 2018.11.18, 13:15

Re: Yii2 Url Mnager

Сообщение hovhannes_ab »

ElisDN писал(а):
2019.09.02, 23:24
Через создание классов правил.
По другому такие задачи не можно реализовать?

hovhannes_ab
Сообщения: 39
Зарегистрирован: 2018.11.18, 13:15

Re: Yii2 Url Mnager

Сообщение 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;
}
Так не получится

yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Yii2 Url Mnager

Сообщение yiiliveext »

hovhannes_ab писал(а):
2019.09.02, 23:28
Так не получится
Тогда ставьте правильно задачу.

hovhannes_ab
Сообщения: 39
Зарегистрирован: 2018.11.18, 13:15

Re: Yii2 Url Mnager

Сообщение hovhannes_ab »

yiiliveext писал(а):
2019.09.02, 23:30
hovhannes_ab писал(а):
2019.09.02, 23:28
Так не получится
Тогда ставьте правильно задачу.
[
'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
],

Напишите на примере этого кода пожалуйста

yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Yii2 Url Mnager

Сообщение yiiliveext »

hovhannes_ab писал(а):
2019.09.02, 23:38
Напишите на примере этого кода пожалуйста
Покажите экшены.

hovhannes_ab
Сообщения: 39
Зарегистрирован: 2018.11.18, 13:15

Re: Yii2 Url Mnager

Сообщение hovhannes_ab »

public function actionTest($params)
{
echo "action Test";
}

public function actionTest2($params2)
{
echo "action Test2";
}

yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Yii2 Url Mnager

Сообщение yiiliveext »

Какие значения могут принимать $params и $params2

hovhannes_ab
Сообщения: 39
Зарегистрирован: 2018.11.18, 13:15

Re: Yii2 Url Mnager

Сообщение hovhannes_ab »

yiiliveext писал(а):
2019.09.02, 23:49
Какие значения могут принимать $params и $params2
(string) test-test-te3tuk

hovhannes_ab
Сообщения: 39
Зарегистрирован: 2018.11.18, 13:15

Re: Yii2 Url Mnager

Сообщение 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 то будет работать

yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Yii2 Url Mnager

Сообщение yiiliveext »

Если это произвольная строка, то какая по-вашему должна быть логика распознания?

hovhannes_ab
Сообщения: 39
Зарегистрирован: 2018.11.18, 13:15

Re: Yii2 Url Mnager

Сообщение hovhannes_ab »

там все уникальные

hovhannes_ab
Сообщения: 39
Зарегистрирован: 2018.11.18, 13:15

Re: Yii2 Url Mnager

Сообщение hovhannes_ab »

Параметры строки, но уникальные строки

yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Yii2 Url Mnager

Сообщение yiiliveext »

Если их несколько, прописываете прямо в правилах, если их много и/или они распознаются по какому-то признаку, то пишете свой класс правил.

hovhannes_ab
Сообщения: 39
Зарегистрирован: 2018.11.18, 13:15

Re: Yii2 Url Mnager

Сообщение hovhannes_ab »

Ну да осталось только так делать. Спасибо

Ответить