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