Aufruf einer Mitgliedsfunktion redirect () für String - Yii2 v2.0.36

Nov 21 2020

Wenn ich versuche, von der init () - Funktion meines Controllers zur URL umzuleiten, wird die folgende Meldung angezeigt: Aufruf einer Mitgliedsfunktion redirect () für eine Zeichenfolge .

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

    parent::init();
}

Antworten

4 rob006 Nov 21 2020 at 16:01

Sie müssen rufen $this->redirect() nach parent::init() , da $responseEigentum (verwendet von $this->redirect()) wird es initialisiert .

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

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

Aber im Allgemeinen init()ist es kein guter Ort, um eine solche Umleitung durchzuführen (es wird wahrscheinlich nicht einmal funktionieren, da init()nichts zurückgegeben werden sollte, sodass Ihre Umleitung möglicherweise ignoriert wird). Sie sollten beforeAction()stattdessen verwenden. Hier können Sie sehen, wie Sie die Antwort in konfigurieren.beforeAction() Ersetzen asJson()Sie sie einfach durch Ihre Umleitung:

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

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

    return parent::beforeAction();
}