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

Yii url manager, вопрос по созданию правила?

Здравствуйте. Что то заткнулся в таком вопросе:

Есть следующее правило:

'rules'=>array(
    '<view:(agreement|vendors|partners|about|howtobuy)>'=>'site/page',
     'pages/<view:\w+>'=>'/site/page',
),


Есть две страницы генерируемые как :
CController::createAbsoluteUrl('/site/page', array('view'=>'test')); //получаем 'site.ru/test'
CController::createAbsoluteUrl('/site/page', array('view'=>'vendors')); //получаем 'site.ru/vendors'


Если правило
'<view:(agreement|vendors|partners|about|howtobuy)>'=>'site/page',


получаем
CController::createAbsoluteUrl('/site/page', array('view'=>'test')); //получаем 'site.ru/test'
CController::createAbsoluteUrl('/site/page', array('view'=>'vendors')); //получаем 'site.ru/vendors'


Если правило
'pages/<view:\w+>'=>'/site/page',

то получаем на всех страницах site.ru/pages/page

Так вот вопрос, как сделать правило, что бы первом вхождении, формировалась одна ссылка, а если не подходит по первому правилу, то формируется вторая?

Например :
site.ru/vendors , но site.ru/pages/nolink
  • Вопрос задан
  • 2265 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 2
AloneCoder
@AloneCoder
[object Object]
Слеш лишний, это указывается контроллер/экшн
'rules'=>array(
    '<view:(agreement|vendors|partners|about|howtobuy)>'=>'site/page',
     'pages/<view:\w+>'=>'site/page',
),

По этим правилам, если что-то не подходит к верхнему, проверяется ниже - такой приоритет
CController::createAbsoluteUrl('site/page', array('view'=>'vendors')); //получаем 'site.ru/vendors'
CController::createAbsoluteUrl('site/page', array('view'=>'test')); //получаем 'site.ru/pages/test'
Ответ написан
kawabanga
@kawabanga Автор вопроса
Вот такое правило 'q/'=>'site/page',

<?= CController::createAbsoluteUrl('/site/page',array('view'=>'help'))?>
<?= CController::createAbsoluteUrl('/site/page',array('view'=>'howtobuy'))?>

Создает для обоих
ссылки вида
q/help
q/howtobuy
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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