【问题标题】:Setting up Yii2 project in localy system in Window XAMPP getting error在Window XAMPP的本地系统中设置Yii2项目出现错误
【发布时间】:2019-12-13 23:22:05
【问题描述】:

我在 XAMPP 窗口的本地系统中设置 Yii2 项目,但出现错误:

common\components\Request::validateCsrfToken() 的声明应该 兼容 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();
}

【问题讨论】:

  • 这是common\components\Request::validateCsrfToken()你的函数吗?
  • 是的,这是此函数中的代码 ` public function validateCsrfToken() { if($this->enableCsrfValidation && in_array(Yii::$app->getUrlManager()->parseRequest($this)[ 0], $this->noCsrfRoutes)){ return true; } 返回父::validateCsrfToken(); } `

标签: php windows yii yii2 xampp


【解决方案1】:

这个问题是因为您在 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); 
}

每次重写其中一个函数时都需要这样做(即beforeActionafterActionbeforeSave 等等...)

【讨论】:

  • @Developer 很高兴我能帮上忙。如果它对您有帮助,请接受答案,以便将来遇到类似问题的其他人有所帮助。
猜你喜欢
  • 2018-10-11
  • 2016-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
  • 2017-03-11
相关资源
最近更新 更多