Yii2 Переменные для передачи в URL - правила не работают - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть два действия с параметрами.Я написал два правила URL, но только одно работает одновременно.Я не знаю проблему.Это мои действия, действие Index в Site Controller и другое действие index в Product Controller

public function actionIndex($language = null) {
    /* some codes */
}

public function actionIndex($id= null) {
    /* some codes */
}

'rules' => [
    '<language>' => 'site/index',
    '<id>' => 'product/index',
  ]

Выше приведены мои URL-правила. Но работает только первое правило.В чем проблема?

1 Ответ

0 голосов
/ 19 сентября 2019

Ваши правила неоднозначны.'<language>' шаблон будет соответствовать каждому URL, поэтому второе правило никогда не будет достигнуто.Вы должны либо создать различную структуру URL для этих двух правил:

'rules' => [
    '<language>' => 'site/index',
    'id/<id>' => 'product/index',
],

, либо использовать разные шаблоны (только литеральные языки и числовые идентификаторы):

'rules' => [
    '<language:[a-z]+>' => 'site/index',
    '<id:\d+>' => 'product/index',
],
...