我有一个如下所示的网址:
<controller>/<action>/param/value
我希望它喜欢这样的东西:
param/value
如何实现?
我尝试了这个规则,但不确定它是否可以(控制器是帐户,操作是索引)。
'user/<user:.*>' => 'account/index/user/test'
我有一个如下所示的网址:
<controller>/<action>/param/value
我希望它喜欢这样的东西:
param/value
如何实现?
我尝试了这个规则,但不确定它是否可以(控制器是帐户,操作是索引)。
'user/<user:.*>' => 'account/index/user/test'
如果我正确理解了您的问题,您希望像这样处理 URL:
mysite.domain/user/username123
并使用参数User调用AccountController中的actionIndex,(在这种情况下)等于“username123”
在这种情况下,您可以尝试以下规则:
'user/<user:.*>' => 'account/index/<user>'
但是,如果您的操作可能需要更改声明:
function actionIndex($user){
// code
}
我会避免将参数放入动作签名中,因为 yii 根本不会处理签名不匹配的动作[优雅地]...事实上,将 $user 放入将绑定该动作以始终需要指定 $user 并且如果你曾经决定更改您的功能,追踪为什么没有调用您的操作比确定您的 $_GET 未设置的原因更难......我建议不要将 $user 添加到签名中,只需执行以下操作跟随你的行动。
//will always run on /user/<USER:.*>
function actionIndex(){
$user = isset($_GET['user'])?$_GET['user']:NULL;
if(!is_null($user)){
//your user specific account action..
}else{
//handle your error gracefully..
}
}
这种方法可以让您的操作更加灵活。URL 规则应如下所示:
'user/<user:.*>' => 'account/index/user/<user>' //user is defined as a get...
希望能帮助&&快乐编码!