Yii框架urlManager重写规则
我有一个如下所示的url:Yii框架urlManager重写规则,yii,Yii,我有一个如下所示的url: <controller>/<action>/param/value param/value mysite.domain/user/username123 如何实现这一目标 我尝试了这个规则,但不确定它是否正常(控制器是account,操作是index) “用户/”=>“帐户/索引/用户/测试” 如果我正确理解了您的问题,您希望如下处理URL: <controller>/<action>/param/value p
<controller>/<action>/param/value
param/value
mysite.domain/user/username123
如何实现这一目标
我尝试了这个规则,但不确定它是否正常(控制器是account,操作是index)
“用户/”=>“帐户/索引/用户/测试”
如果我正确理解了您的问题,您希望如下处理URL:
<controller>/<action>/param/value
param/value
mysite.domain/user/username123
并在AccountController中调用actionIndex,使用参数User,该参数(在本例中)等于“username123”
在这种情况下,您可以尝试以下规则:
'user/<user:.*>' => 'account/index/<user>'
我会避免将参数放入动作签名中,因为yii根本不会处理签名不匹配的动作。。。事实上,将$user放入将绑定该操作,使其始终需要指定$user。如果您决定更改功能,跟踪操作未被调用的原因将比确定未设置$u 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..
}
}
//将始终在/user上运行/
函数actionIndex(){
$user=isset($\u GET['user'])?$\u GET['user']:NULL;
如果(!为null($user)){
//您的用户特定帐户操作。。
}否则{
//优雅地处理你的错误。。
}
}
这种方法让你的行动更加灵活。URL规则应如下所示:
'user/<user:.*>' => 'account/index/user/<user>' //user is defined as a get...
'user/'=>'account/index/user/'//用户被定义为一个get。。。
希望这有助于&快乐编码
urlManager
的工作方式正好相反,您需要的是.htaccess
重定向。