2015-10-23 26 views
11

Ho informazioni sugli eventi di yii2 doc.Esempio reale di eventi in Yii2

So come funziona, ma non so dove utilizzarlo e come usarlo nel mio sviluppo. C'è un esempio di invio di notifiche via email ma voglio un esempio solido che chiarisca l'idea di dove come usarlo .

MY codice è sotto nel modello scrivo

const EVENT_NEW_USER = 'new-user'; 
public function sendMailto($event){ 
    $this->sendMail(arguments); 
    // you code 
} 

regolatore:

use yii\base\Component; 
use yii\base\Event; 

public function someaction(){ 
    $model->on(SignUpForm::EVENT_NEW_USER, [$model,'sendMailto'],['auth'=>$model_auth,'user_details'=>$user_details]); 
    $model->trigger(SignUpForm::EVENT_NEW_USER); 
} 
+0

ho fatto molte ricerche e ho trovato alcuni esempi ma non sono in grado di trovare quando, perché e dove usarlo durante lo sviluppo. –

+0

Questo esempio è abbastanza buono, che cosa esattamente non puoi capire? – arogachev

+0

non riesco a capire come posso riutilizzarlo. per esempio prima di salvare è un evento e possiamo riutilizzarlo più volte. –

risposta

3

utilizzo eventi Yii per accoppiare liberamente mittente e il destinatario di messaggi all'interno di una singola installazione Yii (senza distrubution, single server).

Nel mio software Yii ci sono moduli Yii per blocchi funzione. I clienti ricevono i set di moduli in base ai loro requisiti di funzionalità. Questi moduli devono comunicare tra loro.

Esempio:

  • Nel modulo 1 (modulo mittente) v'è un aggiornamento dello stato che deve essere comunicati agli utilizzatori.
  • Il modulo 2 (modulo ricevitore) invia aggiornamenti di stato a twitter.
  • Il modulo 3 (modulo ricevitore) invia gli aggiornamenti di stato via e-mail.

Per rendere i moduli mittente indipendenti dai moduli ricevitori, utilizzo i meccanismi evento Yii. Quindi, il Modulo 1 non ha bisogno di sapere nulla sul ricevitore e i Moduli 2 e 3 non hanno bisogno di nulla sul mittente. C'è solo una struttura di messaggi comune.

Ciò funziona perfettamente e i moduli sono reciprocamente indipendenti.