Verwendung von Ereignissen in Yii

8

Ich möchte Code im onBeginRequest-Ereignis ausführen.
Wo mache ich das? Ich gehe davon aus, dass ich das im Code der Kernbibliothek nicht hinzufügen werde.
Ich bin ein total noob in Yii

    
Itay Moav -Malimovka 14.09.2011, 00:33
quelle

2 Antworten

15

Wenn Sie onBeginRequest und onEndRequest verwenden möchten, können Sie die folgenden Zeilen in Ihre Konfigurationsdatei einfügen:

%Vor%

oder Sie können es inline machen

%Vor%

wobei Y ein Klassenname und getStats und writeStats Methoden dieser Klasse sind. Stellen Sie sich vor, Sie haben eine Klasse Y wie folgt deklariert:

%Vor%

So werden bei jeder Anfrage beide Methoden automatisch ausgeführt. Natürlich können Sie denken "warum nicht einfach onBeginRequest-Methode überladen?" Vor allen Dingen können Sie jedoch nicht die Klasse erweitern, um wiederholten Code auszuführen, und Sie können auch verschiedene Methoden verschiedener Klassen ausführen, die an verschiedenen Stellen deklariert sind. Sie können also

hinzufügen %Vor%

in jedem anderen Teil Ihrer Anwendung zusammen mit früheren Event-Handlern und Sie werden sowohl Y->writeStats als auch YClass->someMethod nach der Verarbeitung der Anfrage ausführen. Mit diesem Verhalten können Sie Erweiterungskomponenten fast beliebiger Komplexität ohne Änderung des Quellcodes und ohne Erweiterung der Basisklassen von Yii erstellen.

    
Johnatan 14.09.2011, 17:35
quelle
1

Ich glaube, Sie können dies an jeder beliebigen Stelle in Ihren Dateien tun, bevor eine Ausgabe gestartet wird. Daher sollte es in einer Controller-, Ansichts- oder benutzerdefinierten Klasse funktionieren, die sich normalerweise im Ordner "protected" in einer Yii-Webanwendung befindet. Zu Ihrer Information: Diese Dateien sind keine Kerndateien und können (fast) frei bearbeitet werden, wie die Yii-Framework-Dateien (wie von der "$ yii" var in der Bootstrap-Datei index.php referenziert).

Die Funktionen sehen wie folgt aus:

%Vor%     
ldg 14.09.2011 00:49
quelle

Tags und Links