2012-03-10 8 views
25

Questa è la classe FormEvents dal repository Symfony2 su github. È collegato all'articolo principale, How to Dynamically Generate Forms Using Form Events.Descrizione degli eventi del modulo Symfony2?

Chiunque konws esattamente quando questi eventi vengono chiamati nel flusso?

namespace Symfony\Component\Form; 

/** 
* @author Bernhard Schussek <[email protected]> 
*/ 
final class FormEvents 
{ 
    const PRE_BIND = 'form.pre_bind'; 
    const POST_BIND = 'form.post_bind'; 
    const PRE_SET_DATA = 'form.pre_set_data'; 
    const POST_SET_DATA = 'form.post_set_data'; 
    const BIND_CLIENT_DATA = 'form.bind_client_data'; 
    const BIND_NORM_DATA = 'form.bind_norm_data'; 
    const SET_DATA = 'form.set_data'; 
} 

risposta

65

Ci sono due tipi di eventi:

DataEvent - accesso in sola lettura ai dati del modulo. Gli eventi "Pre" e "Post" sono di sola lettura.

FilterDataEvent - evento che consente di modificare i dati del modulo.

form.pre_bind DataEvent innescato prima che i dati è legato al form. Innescato da Symfony\Component\Form\Form::bind()

form.post_bind DataEvent attivato dopo che i dati è legato al form. Innescato da Symfony\Component\Form\Form::bind()

form.pre_set_data DataEvent innescato prima i campi sono pieni di dati predefiniti. Innescato da Symfony\Component\Form\Form::setData()

form.post_set_data DataEvent innescata dopo i campi sono pieni di dati predefiniti. Innescato da Symfony\Component\Form\Form::setData()

form.bind_client_data FilterDataEvent innescato prima che i dati è legato al form. Innescato da Symfony\Component\Form\Form::bind()

form.bind_norm_data FilterDataEvent attivato dopo che i dati è stata normalizzata. Attivato da Symfony\Component\Form\Form::bind(). Vedere Symfony\Component\Form\Extension\Core\EventListener\FixUrlProtocolListener (aggiunto dal UrlType per un esempio)

form.set_data FilterDataEvent innescato mentre i dati di default viene legato. Attivato da Symfony\Component\Form\Form::setData()

Suggerirei di dare un'occhiata alla classe Form stessa per avere un'idea migliore di quando questi eventi sono attivati ​​e come è possibile utilizzarli.

+0

Davvero grazie, risposta accettata! Nel frattempo sto avendo qualche problema con gli eventi di forma, se hai del tempo libero forse puoi darmi un piccolo aiuto: http://stackoverflow.com/questions/9661026/accessing-a-form-field-from- a-subscriber-of-a-form-event-in-symfony2 – Polmonino

+14

Va notato che questa descrizione degli eventi del modulo è valida solo per Symfony 2.0 Component. I seguenti eventi sono stati deprecati a partire dal 2.1 e saranno rimossi a partire da 2.3: 'form.bind_client_data',' form.bind_norm_data', 'form.set_data'. A partire da 2.1, i listener di eventi di form ora ricevono un oggetto 'FormEvent' invece degli oggetti deprecati' FilterDataEvent' e 'DataEvent', che verranno rimossi in 2.3. –

+0

Ehi @xanido, i tuoi link sono rotti. – Mick

Problemi correlati