【问题标题】:beforeAction() should be compatible with yii\web\Controller::beforeAction($action)beforeAction() 应该与 yii\web\Controller::beforeAction($action) 兼容
【发布时间】:2017-04-22 13:27:31
【问题描述】:

我正在开发一个项目,它在实时服务器和我的本地服务器上运行良好。但是当我将它上传到另一台服务器上时,它给了我错误 beforeAction() 应该与 yii\web\Controller::beforeAction($action) 兼容。

我在服务器上设置了所有需要的东西。

但是当我在新服务器上登录我的项目时,它给了我没有错误的空白页面。当我访问内页(登录后的页面)时,它给了我错误 beforeAction() 应该与 yii\web\Controller::beforeAction($action) 兼容。

我无法理解实际问题,我查看了此错误给出的所有相关答案,但找不到确切答案。

这是我的 beforeAction 函数

public function beforeAction() {

    if (\Yii::$app->getUser()->isGuest) {
        $this->redirect(Yii::$app->urlManager->createAbsoluteUrl('auth/login'));
        return false;
    } else {
        return true;
    }
}

【问题讨论】:

    标签: php yii yii2


    【解决方案1】:

    当您覆盖方法时,您需要使用相同的签名。添加 $action 参数。在 before* 类的方法中先检查父母的结果也是一个好习惯:

    public function beforeAction($action)
    {
        if (parent::beforeAction($action)) {
            if (\Yii::$app->getUser()->isGuest) {
                $this->redirect(Yii::$app->urlManager->createAbsoluteUrl('auth/login'));
                return false;
            }
                return true;
        }
        return false;
    }
    

    最后一件事 - 最好使用 access filter

    【讨论】:

    • 它仍然给我空白页
    • 让我说清楚 - 你已经在这个 beforeAction 签名中添加了 $action ,它仍然会给你一个关于这个 beforeActionyii\web\Controller::beforeAction($action) 不兼容的错误?
    • 奇怪...你能把你的控制器代码和记录的错误堆栈一起粘贴到 pastebin.com 给我们看吗?
    【解决方案2】:

    试试这个:

    public function beforeAction($action)
        { 
            ....
        }
    

    在 beforeAction 方法中传递 $action

    【讨论】:

    • 我认为是您的 php 版本问题 - 您使用哪个 php 版本?
    • 我使用的是 php 5.6
    【解决方案3】:

    您错过了 \yii\base\Controller 中的定义所必需的参数。

    试试这个。

    public function beforeAction($action)
    {
        parent::beforeAction($action);
    
        if (\Yii::$app->getUser()->isGuest)
        {
            $this->redirect(Yii::$app->urlManager->createAbsoluteUrl('auth/login'));
            return false;
        } else
        {
            return true;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      • 2011-02-15
      • 2014-05-30
      • 1970-01-01
      相关资源
      最近更新 更多