Voglio eseguire un codice nell'evento onBeginRequest.
Dove lo faccio? Suppongo di non voler aggiungere questo nel codice della libreria di base.
Sono totalmente niubbo in YiiCome utilizzare gli eventi in Yii
risposta
Se si desidera utilizzare onBeginRequest e onEndRequest si può fare aggiungendo le seguenti righe nel file di configurazione:
return array (
...
'onBeginRequest'=>array('Y', 'getStats'),
'onEndRequest'=>array('Y', 'writeStats'),
...
)
o si può fare in linea
Yii::app()->onBeginRequest= array('Y', 'getStats');
Yii::app()->onEndRequest= array('Y', 'writeStats');
dove Y
è un nome di classe e getStats
e writeStats
sono metodi di questa classe. Ora immaginate di avere una classe Y
dichiarata in questo modo:
class Y {
public function getStats ($event) {
// Here you put all needed code to start stats collection
}
public function writeStats ($event) {
// Here you put all needed code to save collected stats
}
}
Così su ogni richiesta entrambi i metodi verrà eseguito automaticamente. Ovviamente puoi pensare "perché non sovraccaricare semplicemente il metodo BeginRequest?" ma prima di tutto gli eventi consentono di non estendere la classe per eseguire codice ripetuto e inoltre consentono di eseguire diversi metodi di classi diverse dichiarate in luoghi diversi. modo da poter aggiungere
Yii::app()->onEndRequest= array('YClass', 'someMethod');
in qualsiasi altra parte della vostra applicazione insieme a gestori di eventi precedenti e otterrete eseguire sia Y->writeStats
e YClass->someMethod
dopo la richiesta di trasformazione. Questo comportamento consente di creare componenti di estensione di qualsiasi complessità senza modificare il codice sorgente e senza l'estensione delle classi base di Yii.
io credo che si possa fare questo praticamente ovunque nei file prima di ogni uscita è iniziata, così dovrebbe funzionare in un controller, vista o personalizzato di classe, di solito si trova nella "protetta "cartella in un'app Web Yii. Per vostra informazione, quei file non sono file core e possono essere (quasi) liberamente modificati, come indicato nei file di framework Yii (come indicato nella variabile "$ yii" nel file index.php bootstrap).
le funzioni assomigliano:
Yii::app()->onbeginRequest = create_function('$event', 'return function_name_a();');
Yii::app()->onendRequest = create_function('$event', 'return function_name_b();');
che odora di un eval ... –
hai chiesto come è stato fatto ... – ldg
si può fare 'Yii :: app() -> onendRequest = function() {// fare somthing};' –
- 1. Perché utilizzare gli eventi?
- 2. Come utilizzare correttamente gli eventi in Backbone
- 3. componenti yii: eventi e comportamenti?
- 4. Come utilizzare registerMetatag in Yii 2
- 5. come utilizzare lo spazio dei nomi Yii
- 6. Come configurare Yii Framework per utilizzare HTTPS?
- 7. Come utilizzare l'ereditarietà e gli elenchi di eventi CDI?
- 8. Come aggiungere e utilizzare correttamente gli eventi D3?
- 9. Per utilizzare "emulatePrepare" in Yii o no?
- 10. Quali sono gli eventi che posso utilizzare in Excel
- 11. Perché utilizzare Chrome `with` per gli eventi in linea
- 12. Simula C# come gli eventi in javascript
- 13. Come gestire gli eventi in MVVM
- 14. Come fare gli eventi in Ruby?
- 15. Come cancellare tutti gli eventi in MySQL
- 16. Come disabilitare gli eventi tattili in SwipeRefreshLayout?
- 17. Come funzionano gli eventi virtuali in C#?
- 18. Come osservare gli eventi personalizzati in AngularJS?
- 19. Come gestire meglio gli eventi
- 20. Come utilizzare gli alias in Google Calendar?
- 21. come usare openid in yii?
- 22. Seleziona gli eventi in Angular2
- 23. Utilizzare solo gli eventi tattili JavaFX nell'applicazione Swing
- 24. Come attivare eventi su tutti gli elementi
- 25. Come utilizzare Yii con un modello di database multilingue?
- 26. cos'è Yii :: app() in framework php yii
- 27. Come utilizzare il compositore con la mia applicazione Yii
- 28. Impossibile utilizzare il modello nella migrazione in Yii 1.x
- 29. Come integrare i test QUnit in Yii
- 30. Come tracciare gli eventi Javascript (Stack Trace)?
Quindi, dove nella struttura del progetto dovrebbe essere la clas live se la aggiungo nel file di configurazione? – RicardoE