Частичная работа правил в UrlManager в модуле

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
a-prof
Сообщения: 37
Зарегистрирован: 2015.01.08, 22:41

Частичная работа правил в UrlManager в модуле

Сообщение a-prof »

Добрый день. Изучаю YII на основе YII2-START от VOVA07.
Делаю простенький каталог.
Все построено на модулях. Делаю модуль организаций и столкнулся с проблемой ЧПУ. Не могу победить третий день.
Вот часть Bootstrap моего модуля:

Код: Выделить всё

$app->getUrlManager()->addRules(
            [
                '<_m:catalog>' => '<_m>/default/index', // работает, генерирует site.com/catalog/
                '<_a:catalog>/<id:\d+>' => '<_a>/default/section', // работает, генерирует site.com/catalog/1/
                '<_a:catalog>/<id:\d+>/<letter:\w+>' => '<_a>/default/section-letter', // работает, генерирует site.com/catalog/1/A/
                '<_a:catalog/view>/<id:\d+>-<alias:[a-zA-Z0-9_-]{1,100}+>' => '<_a>/default/view', //НЕ РАБОТАЕТ, а должен генерить что-то типа site.com/catalog/view/1-item1. В место этого отдает мне site.com/catalog/default/view/?id=1&alias=item1
                '<_a:catalog-by-rate>/<id:\d+>' => '<_a>/default/section-rating', //НЕ РАБОТАЕТ, а должен генерить что-то типа site.com/catalog-by-rate/1/. В место этого отдает мне site.com/catalog/default/section-rating/?id=1
            ]
        );
 
Что-то похожее и на моем модуле новостей. Не работает

Код: Выделить всё

<_a:news/view>/<id:\d+>-<alias:[a-zA-Z0-9_-]{1,100}+>' => '<_a>/default/view',
Заранее спасибо за помощь.
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Частичная работа правил в UrlManager в модуле

Сообщение vova07 »

У вас чуток ошибочные правила.
Из вашего примера только первое правило написано верно. Следующие 2 работают и по сути правильные, хотя чисто для хорошего тона параметр лучше назвать не <_a> a <_m> так как по сути речь о модуле а не о экшене .
Ниже приведу верный вариант, стоит также помнить про последовательность правил:

Код: Выделить всё

$app->getUrlManager()->addRules(
    [
        '<_m:catalog>/view/<id:\d+>-<alias:[a-zA-Z0-9_-]{1,100}+>' => '<_m>/default/view',
        '<_m:catalog>/<id:\d+>/<letter:\w+>' => '<_m>/default/section-letter',
        '<_m:catalog>/<id:\d+>' => '<_m>/default/section',
        'catalog-by-rate/<id:\d+>' => 'catalog/default/section-rating'
        '<_m:catalog>' => '<_m>/default/index',
    ]
);
a-prof
Сообщения: 37
Зарегистрирован: 2015.01.08, 22:41

Re: Частичная работа правил в UrlManager в модуле

Сообщение a-prof »

Спасибо! Так все работает!
Ответить