NamedEvents

NamedEvents è una tecnica di sviluppo che aiuta nella realizzazione di applicazioni scalabili permettendo la definizione di punti di inclusione di codice esterno nelle proprie applicazioni.

NamedEvents nei Controllers

Nei controllers NamedEvents è utilizzato mediante Component::Pow::event() e permette di richiamare funzioni di callback definite in AppController o AppComponent e gestire un elenco di namedActions in risposta all'invio di una form.

$this->Pow->event('myEvent');

myEvent è una chiave dell'array DAC app.namedEvents e contiene la configurazione necessaria all'evento per essere correttamente eseguito.

La configurazione dell'evento (un parametro opzionale aggiuntivo) è un array associativo che contiene informazioni utili quali callback da invocare, azioni da gestire e variabili su cui poter lavorare. Questo array viene esteso dalla DAC.

..
if ( $this->Model->save($this->data) ) {
 
  $id = $this->Model->getLastInsertId();
 
  $this->Pow->event('afterSave',array(
    'vars' => array(
      'id' => &$id 
    )
  ));
}

Il precedente esempio dimostra come lanciare un evento passando inoltre una variabile per riferimento. Le callback dell'evento riceveranno tali variabili e potranno leggerle e modificarle interagendo così in modo profondo con l'applicazione.

NamedEvents nelle Views

Nelle viste l'esigenza è poter estendere delle interfacce. In questo senso il metodo Helper::Pow::point() permette di definire dei punti di inserimento per personalizzazioni dell'interfaccia.

<?php $pow->point('myPoint'); ?>

Il metodo point() permette di includere un elenco di elements e di effettuare delle requestAction. Il tutto è ovviamente inframmezzato con la possibilità di eseguire delle callback definite in AppHelper.

Il flow di questo hook è:

  • Callbacks “beforeElements”
  • Inclusione di uno o più elementi
  • Callbacks “beforeActions”
  • Chiamata di una o più requestActions
  • Callbacks “afterActions”

Un esempio di configurazione di myPoint potrebbe essere:

JC::extend('app.points.myPoint',array(
  'beforeElements' => array( '>>foo', '>>foo1' ),
  'elemens' => array( 'element1', 'element2' ),
  'beforeActions' => array( '>>foo3' ),
  'actions' => array( '/users/index/' ),
  'afterActions' => array( '>>foo4', '>>foo5' ),
));
 
/home/juniorcm/public_html/wiki/data/pages/cakepower/events.txt · Ultima modifica: 09/05/2009 09:38 da peg
 
Ad eccezione da dove è diversamente indicato, il contenuto di questo wiki è sotto la seguente licenza:GNU Free Documentation License 1.2
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki