2012-03-10 19 views
25

Esta es la clase FormEvents del repositorio Symfony2 en github. Está vinculado desde el artículo principal, How to Dynamically Generate Forms Using Form Events.Descripción de los eventos de formulario Symfony2?

Cualquiera konws exactamente cuando se invocan estos eventos en el flujo?

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'; 
} 

Respuesta

65

Hay dos tipos de eventos:

DataEvent - acceso de sólo lectura a los datos del formulario. Los eventos 'Pre' y 'Post' son de solo lectura.

FilterDataEvent - evento que permite modificar los datos del formulario.

form.pre_bind DataEvent disparada antes de datos está ligada a la forma. Desencadenada por Symfony\Component\Form\Form::bind()

form.post_bind DataEvent desencadena después de datos se une a la forma. Desencadenada por Symfony\Component\Form\Form::bind()

form.pre_set_data DataEvent disparado antes de los campos están llenos de datos por defecto. Desencadenada por Symfony\Component\Form\Form::setData()

form.post_set_data DataEvent desencadenada después de los campos están llenos de datos por defecto. Desencadenada por Symfony\Component\Form\Form::setData()

form.bind_client_data FilterDataEvent disparado antes de datos está ligada a la forma. Desencadenada por Symfony\Component\Form\Form::bind()

form.bind_norm_data FilterDataEvent produce tras los datos se ha normalizado. Activado por Symfony\Component\Form\Form::bind(). Ver Symfony\Component\Form\Extension\Core\EventListener\FixUrlProtocolListener (añadida por el UrlType para un ejemplo)

form.set_data FilterDataEvent disparado mientras que los datos por defecto se está obligado. Activado por Symfony\Component\Form\Form::setData()

Recomiendo hurgar en la clase Form para obtener una mejor idea de cuándo se desencadenan estos eventos y cómo puede usarlos.

+0

Realmente gracias, ¡respuesta aceptada! Mientras tanto, tengo algunos problemas con los eventos de formulario, si tienes algo de tiempo libre, quizás puedas ayudarme un poco: http://stackoverflow.com/questions/9661026/accessing-a-form-field-from- a-subscriber-of-a-form-event-in-symfony2 – Polmonino

+14

Cabe señalar que esta descripción de los eventos de formulario solo es válida para Symfony 2.0 Form Component. Los siguientes eventos se han desaprobado a partir de 2.1 y se eliminarán a partir de 2.3: 'form.bind_client_data',' form.bind_norm_data', 'form.set_data'. A partir de 2.1, los oyentes de evento ahora reciben un objeto 'FormEvent' en lugar de los objetos' FilterDataEvent' y 'DataEvent' en desuso, que se eliminarán en 2.3. –

+0

Hola @xanido, tus enlaces están rotos. – Mick

Cuestiones relacionadas