Yii2变量要在URL中传递-规则不起作用

时间:2019-09-19 09:25:16

标签: yii2 yii2-advanced-app yii2-basic-app

我有两个带有参数的动作。我已经写了两个URL规则,但是一次只能工作一个。我不知道这个问题。这些是我的想法 网站控制器中的索引操作,而另一个是产品控制器中的索引操作

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

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

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

以上是我的网址规则。但是只有第一个规则有效。有什么问题吗?

1 个答案:

答案 0 :(得分:0)

您的规则不明确。 '<language>'模式将匹配每个URL,因此永远不会达到第二个规则。您应该为这两个规则创建不同的URL结构:

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

或使用其他模式(仅文字语言和数字ID):

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