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

Re: Yii2 Url Mnager

Добавлено: 2019.09.02, 23:38
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
],

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

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
Ну да осталось только так делать. Спасибо