我有两个带有参数的动作。我已经写了两个URL规则,但是一次只能工作一个。我不知道这个问题。这些是我的想法 网站控制器中的索引操作,而另一个是产品控制器中的索引操作
public function actionIndex($language = null) {
/* some codes */
}
public function actionIndex($id= null) {
/* some codes */
}
'rules' => [
'<language>' => 'site/index',
'<id>' => 'product/index',
]
以上是我的网址规则。但是只有第一个规则有效。有什么问题吗?
答案 0 :(得分:0)
您的规则不明确。 '<language>'
模式将匹配每个URL,因此永远不会达到第二个规则。您应该为这两个规则创建不同的URL结构:
'rules' => [
'<language>' => 'site/index',
'id/<id>' => 'product/index',
],
或使用其他模式(仅文字语言和数字ID):
'rules' => [
'<language:[a-z]+>' => 'site/index',
'<id:\d+>' => 'product/index',
],