在Windows XAMPP本地系统中设置Yii2项目时出错

jxct1oxe  于 2022-11-09  发布在  Windows
关注(0)|答案(1)|浏览(138)

我在窗口XAMPP中的本地系统中设置Yii2项目,我收到一个错误:
通用组件声明请求::validateCsrfToken()应该与yii兼容

但是代码在Ubuntu服务器上运行良好。
下面是我的validateCsrfToken()方法:

public function validateCsrfToken()
{
    if($this->enableCsrfValidation && in_array(Yii::$app->getUrlManager()->parseRequest($this)[0], $this->noCsrfRoutes)){
        return true;
    }
    return parent::validateCsrfToken();
}
wwwo4jvm

wwwo4jvm1#

这个问题是因为你在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等)时,都需要执行此操作。

相关问题