YII: Как добиться другой маршрутизации, если есть параметры GET?

В менеджере URL Yii я хотел бы определить другой маршрут для URL, если есть присоединенные параметры GET. Например, URL "shopping-wizard/" должен идти по маршруту shoppingWizard/index, а URL "shopping-wizard/? Answer=10" должен идти по маршруту shoppingWizard/result.

Я пробовал следующие правила:

'urlManager'=>array(
    'rules'=>array(
        'shopping-wizard/?answer=<answer>' => 'shoppingWizard/result',
        'shopping-wizard/' => 'shoppingWizard/index',
    ),
),

Это не работает, потому что CUrlRule::parseUrl() добавляет косую черту в шаблон. Мой URL с параметром может не иметь косой черты по причинам SEO.

Он работает с компонентом правила URL, но есть ли более простой способ сделать это? Без отдельного компонента?

1 ответ

Вы можете использовать правило следующим образом:

'urlManager'=>array(
    'rules'=>array(
        'shopping-wizard/<answer:\d+>' => 'shoppingWizard/result', //d+ - digits only
        'shopping-wizard/' => 'shoppingWizard/index',
    ),
),

И в вашем контроллере:

public function actionResult($answer) {
    ...
}
Другие вопросы по тегам