在字符串上调用成员函数 redirect() - Yii2 v2.0.36

Call to a member function redirect() on string - Yii2 v2.0.36

当我尝试从控制器的 init() 函数重定向到 url 时,我收到此消息 Call to a member function redirect() on string

public function init()
{
    $someCondition = myBoolFunction();
    if ($someCondition) {
        return $this->redirect('my/url'));
    }

    parent::init();
}

您需要在 parent::init() 之后调用 $this->redirect() ,因为 $response 属性(由 $this->redirect() 使用) 是 initialized there.

public function init() {
    parent::init();

    $someCondition = myBoolFunction();
    if ($someCondition) {
        return $this->redirect('my/url'));
    }
}

但总的来说 init() 不是做这种重定向的好地方(它甚至可能不会工作,因为 init() 不应该 return 任何东西,所以你的重定向可能会被忽略),您应该使用 beforeAction() 代替。 ,只需将 asJson() 替换为您的重定向:

public function beforeAction() {
    parent::init();

    $someCondition = myBoolFunction();
    if ($someCondition) {
        $this->redirect('my/url'));
        return false;
    }

    return parent::beforeAction();
}