我正在努力解决这个问题而没有找到合适的答案。
我希望 my_site / user / 1 成为 my_site / user / user_name
我的urlManager看起来像这样:
'urlManager' => array(
'urlFormat' => 'path',
'rules' => array(
'user/<username:\w+>'=>'user/view',
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
'showScriptName' => false,
),
用户控制器:
public function actionView($username)
{
$this->render('view', array(
'model' => $this->loadModel($username),
));
}
当我点击/ user / admin时,它将我重定向到actionView而不是我的控制器中的actionAdmin,我有多个这样的动作,如创建,删除等。 我怎么能避免这个?还有其他选择吗?
感谢。
答案 0 :(得分:0)
urlManager尝试将url与控制器和操作相匹配。
的第一部分'user/<username:\w+>'=>'user/view',
已与用户控制器匹配,下一部分则查找包含单词的任何字符串,然后将用户发送给用户/视图
我建议将user/<username>
更改为manage-user/<username>
或my-account/<username>
,类似于此。