Задать вопрос

Url manager разные правила для одного контроллера?

Есть сайт с такими страницами.
https://mysite/site/category?id=1&cat=category_1
https://mysite/site/sub?id_sub=1&al=sub_category_5
как видно они находятся в одном контроллере, нужно привести их к такому виду
https://mysite/category_1?id=1
https://mysite/sub_category_5?id_sub=5
как это реализовать? Нужно писать свой набор правил? или можно как то стандартными средствами?
  • Вопрос задан
  • 159 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
'urlManager' => [
            'class' => 'yii\web\UrlManager',
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
              '/<id>/<id_sub>' => 'site/category' 
           ]
        ],

и будут ссылки mysite.ru/1/5
а в экшене category уже разбирать есть sub или нет. Зачем 2 экшена для этого?
Ответ написан
Можно попробовать использовать дефолтные значения в правилах.
Подробнее про их использование Default Parameter Values

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        [
            'pattern' => 'category_1',
            'route' => '/site/category',
            'defaults' => ['cat' => 'category_1']
        ],
        [
            'pattern' => 'sub_category_5',
            'route' => '/site/sub',
            'defaults' => ['al' => 'sub_category_5']
        ],                                 
    ],
],
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы