yii2

时间:2016-08-16 20:24:31

标签: yii2

我的控制器中有一个简单的操作:

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

-

2 个答案:

答案 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>'