我的控制器中有一个简单的操作:
public function actionReset( $key ) {
echo $key;
Yii::$app->end();
}
我在行为中允许这样做:
'rules' => [
[
'actions' => [ 'message', 'activate', 'reset-request', 'reset' ],
'allow' => true,
],
],
它工作正常。但是,只要我将操作更改为actionResetPassword
并允许reset-password
,我就会收到404错误。有趣的是,如果我没有地址中的密钥去网址,那么:
/action/reset-password
我收到$key
缺失的400错误。
但转到action/reset-password/somekeyhere
我找不到404错误。
编辑:
这与动作名称中的连字符有关:
-
WORKS:
规则:reset-password
行动:actionResetpassword($key)
网址测试:~/action/resetpassword/somekeyhere
-
不工作:
规则:reset-password
行动:actionResetPassword($key)
网址测试:~/action/reset-password/somekeyhere
-
不工作:
规则:reset-password
行动:actionResetpassword($key)
网址测试:~/action/reset-password/somekeyhere
-
WORKS:
规则:reset-password
行动:actionResetPassword()
网址测试:~/action/resetpassword
-
答案 0 :(得分:2)
No there isn't.但是有一些性格限制,但就是这样。无论问题是什么都不可能。
答案 1 :(得分:0)
事实证明
问题出在urlManager的配置中
需要修复RegEx:
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>'
要:
'<controller:\w+>/<action:[\w-]+>/<id:\d+>' => '<controller>/<action>'