您好我在yii的URl管理方面遇到了麻烦。
我有一个模型供应商和另一个模型产品。两个控制器都有一个动作信息。现在我想将我的URL创建为
www.example.com/abc.html而不是www.example.com/vendor/info/v-name/abc.html www.example.com/xyz.html而非www.example.com/product/info/p-name/xyz.html
v-name和p-name是参数。
我已将重写规则写为
'<v-name:\w+>'=>'vendor/info',
'<p-name:\w+>'=>'product/info',
但这似乎不起作用。由于第一条规则也适用于产品案例,最后抛出异常。该怎么办?
非常感谢您的帮助。
答案 0 :(得分:1)
我建议您使用更通用的规则:
'<controller:\w+>/<action:\w+>/name/<name:\w+>' => '<controller>/<action>'
名称属性:
public function actionInfo() {
$name = Yii::app()->request->getParam( 'name', 'defaultValue' );
}
答案 1 :(得分:1)
目前,您的两个链接均为check if url contains word
。因此http://example.com/example
如果是产品或供应商,则不会提供任何信息。由于您的供应商规则高于产品,因此每个网址都匹配第一个规则而不是进一步执行。您需要添加任何“标记”以了解它是供应商还是产品。
'vendor\/<v-name:\w+>' => 'vendor/info',
'product\/<p-name:\w+>' => 'product/info',
但是,您的网址会发生变化。您仍然可以将网址更改为<v-name:\w+>\/v
,网址将显示为http://www.example.com/some name of your vendor here/v