Heim >PHP-Framework >YII >Was ist ein YII-Filter?
Filter
Ein Filter ist ein Objekt, das vor oder nach der Ausführung einer Controller-Aktion ausgeführt wird. Beispielsweise kann ein Zugriffskontrollfilter steuern, ob ein bestimmter Endbenutzer die Berechtigung zum Ausführen einer Aktion hat, bevor die Aktion ausgeführt wird, und ein Inhaltskomprimierungsfilter kann den Antwortinhalt komprimieren, nachdem die Aktion ausgeführt wurde, bevor er an den Endbenutzer gesendet wird. (Empfohlenes Lernen:
Filter verwenden
Filter sind im Wesentlichen eine besondere Art von Verhalten, daher ist die Verwendung von Filtern dasselbe wie die Verwendung von Verhalten. Filter können in der Controller-Klasse deklariert werden, indem deren behaviours()-Methode überschrieben wird, wie unten gezeigt:public function behaviors() { return [ [ 'class' => 'yii\filters\HttpCache', 'only' => ['index', 'view'], 'lastModified' => function ($action, $params) { $q = new \yii\db\Query(); return $q->from('user')->max('updated_at'); }, ], ]; }Die Filter der Controller-Klasse werden standardmäßig auf alle Aktionen der Klasse angewendet. Sie können das einzige Attribut konfigurieren Geben Sie explizit an, auf welche Aktionen der Controller angewendet wird. Im obigen Beispiel gilt der HttpCache-Filter nur für die Index- und Ansichtsaktionen. Sie können auch das Attribut „außer“ konfigurieren, um zu verhindern, dass einige Aktionen Filter ausführen. Zusätzlich zu Controllern können Filter in Modulen oder Anwendungskörpern deklariert werden. Nach der Deklaration wird der Filter auf alle Controller-Aktionen angewendet, die zum Modul- oder Anwendungskörper gehören, es sei denn, die Attribute „only“ und „exclusive“ des Filters sind wie oben konfiguriert. Hinweis: Wenn Sie Filter im Modul- oder Anwendungstext deklarieren, verwenden Sie Routen anstelle von Aktions-IDs in den Attributen „only“ und „except“, da die alleinige Verwendung der Aktions-ID im Modul- oder Anwendungstext keine eindeutige Angabe einer bestimmten Aktion ermöglichen kann.
Wenn eine Aktion mehrere Filter hat, werden diese nacheinander gemäß den folgenden Regeln ausgeführt:
Vorfilterung
Um die in behaviours() im Anwendungstext aufgeführten Filter auszuführen. Führen Sie die in behaviours() aufgeführten Filter im Modul der Reihe nach aus. Führen Sie die in behaviours() aufgeführten Filter nacheinander im Controller aus. Wenn ein Filter die Aktionsausführung beendet, werden nachfolgende Filter (einschließlich Vorfilterung und Nachfilterung) nicht mehr ausgeführt. Führen Sie die Aktion aus, nachdem Sie die Vorfilterung erfolgreich bestanden haben.Post-Filterung
Führen Sie die in behaviours() aufgeführten Filter im Controller in umgekehrter Reihenfolge aus. Führen Sie die in behaviours() aufgeführten Filter im Modul in umgekehrter Reihenfolge aus. Führen Sie die in behaviours() im Anwendungstext aufgeführten Filter in umgekehrter Reihenfolge aus.Das obige ist der detaillierte Inhalt vonWas ist ein YII-Filter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!