yii2 中带参数 returns 404 的动作
Action with parameter returns 404 in yii2
我在我的控制器中有这个 before action
public function beforeAction($action)
{
if ($action->id == 'delete-property') {
$this->enableCsrfValidation = false;
}
}
这是控制器动作
//Property Delete ID
public function actionDeleteProperty($id)
{
$id = Yii::$app->request->get('id');
echo $id;
}
这是url经理
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<controller:[\w\-]+>/<action:[\w\-]+>/<id:[\d]+>' => '<controller>/<action>'
],
],
当我访问 http://localhost/hotel/delete-property/60d75e5842777110b81711b3
时,我得到 404
为什么我收到 404?
您的 id 参数模式是 [\d]+
。 \d
匹配任何十进制数字,但您的 ID 是十六进制的,因此字母使其与 [\d]+
模式不匹配。您可以改用 \w
,并更改您的规则,例如:
'<controller:[\w\-]+>/<action:[\w\-]+>/<id:[\w]+>' => '<controller>/<action>'
我在我的控制器中有这个 before action
public function beforeAction($action)
{
if ($action->id == 'delete-property') {
$this->enableCsrfValidation = false;
}
}
这是控制器动作
//Property Delete ID
public function actionDeleteProperty($id)
{
$id = Yii::$app->request->get('id');
echo $id;
}
这是url经理
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<controller:[\w\-]+>/<action:[\w\-]+>/<id:[\d]+>' => '<controller>/<action>'
],
],
当我访问 http://localhost/hotel/delete-property/60d75e5842777110b81711b3
时,我得到 404
为什么我收到 404?
您的 id 参数模式是 [\d]+
。 \d
匹配任何十进制数字,但您的 ID 是十六进制的,因此字母使其与 [\d]+
模式不匹配。您可以改用 \w
,并更改您的规则,例如:
'<controller:[\w\-]+>/<action:[\w\-]+>/<id:[\w]+>' => '<controller>/<action>'