在 Window XAMPP 中在本地系统中设置 Yii2 项目出现错误
Setting up Yii2 project in localy system in Window XAMPP getting error
我在 window XAMPP 的本地系统中设置 Yii2 项目,但出现错误:
Declaration of common\components\Request::validateCsrfToken() should
be compatible with
yii\web\Request::validateCsrfToken($clientSuppliedToken = NULL)
但代码在 Ubuntu 服务器上运行良好。
这是我的 validateCsrfToken()
方法:
public function validateCsrfToken()
{
if($this->enableCsrfValidation && in_array(Yii::$app->getUrlManager()->parseRequest($this)[0], $this->noCsrfRoutes)){
return true;
}
return parent::validateCsrfToken();
}
这个问题是因为您在 Windows 中使用了 strict
PHP,但在 Linux 中没有使用。您拥有的函数 common\components\Request::validateCsrfToken()
应该与 yii\web\Request::validateCsrfToken()
兼容。这意味着,它需要具有相同的签名。
你现在能做的就是把你自己的函数改成
public function validateCsrfToken($token = NULL) {
if ($this->enableCsrfValidation && in_array(Yii::$app->getUrlManager()->parseRequest($this)[0], $this->noCsrfRoutes)) {
return true;
}
return parent::validateCsrfToken($token);
}
每次重写其中一个函数时都需要这样做(即 beforeAction
、afterAction
、beforeSave
以及更多...)
我在 window XAMPP 的本地系统中设置 Yii2 项目,但出现错误:
Declaration of common\components\Request::validateCsrfToken() should be compatible with yii\web\Request::validateCsrfToken($clientSuppliedToken = NULL)
但代码在 Ubuntu 服务器上运行良好。
这是我的 validateCsrfToken()
方法:
public function validateCsrfToken()
{
if($this->enableCsrfValidation && in_array(Yii::$app->getUrlManager()->parseRequest($this)[0], $this->noCsrfRoutes)){
return true;
}
return parent::validateCsrfToken();
}
这个问题是因为您在 Windows 中使用了 strict
PHP,但在 Linux 中没有使用。您拥有的函数 common\components\Request::validateCsrfToken()
应该与 yii\web\Request::validateCsrfToken()
兼容。这意味着,它需要具有相同的签名。
你现在能做的就是把你自己的函数改成
public function validateCsrfToken($token = NULL) {
if ($this->enableCsrfValidation && in_array(Yii::$app->getUrlManager()->parseRequest($this)[0], $this->noCsrfRoutes)) {
return true;
}
return parent::validateCsrfToken($token);
}
每次重写其中一个函数时都需要这样做(即 beforeAction
、afterAction
、beforeSave
以及更多...)