2012-03-10 14 views
25

To jest klasa FormEvents z repozytorium Symfony2 na github. Jest powiązany z głównym artykułem, How to Dynamically Generate Forms Using Form Events.Opis zdarzeń związanych z formą Symfony2?

Ktoś wie dokładnie, kiedy te zdarzenia zostaną wywołane w przepływie?

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

Odpowiedz

65

Istnieją dwa typy zdarzeń:

DataEvent - dostęp tylko do odczytu do danych formularza. Zdarzenia "Pre" i "Post" są tylko do odczytu.

FilterDataEvent - wydarzenie, które umożliwia modyfikację danych formularza.

form.pre_bind DataEvent wyzwalane przed danych jest zobowiązany do formularza. Wyzwalane przez Symfony\Component\Form\Form::bind()

form.post_bind DataEvent wyzwalane po dane jest zobowiązany do formularza. Wyzwalane przez Symfony\Component\Form\Form::bind()

form.pre_set_data DataEvent wyzwalane przed pola są wypełnione danymi domyślnymi. Wyzwalane przez Symfony\Component\Form\Form::setData()

form.post_set_data DataEvent wyzwalane po pola są wypełnione danymi domyślnymi. Wyzwalane przez Symfony\Component\Form\Form::setData()

form.bind_client_data FilterDataEvent wyzwalane przed danych jest zobowiązany do formularza. Wyzwalane przez Symfony\Component\Form\Form::bind()

form.bind_norm_data FilterDataEvent wyzwalane po dane zostały znormalizowane. Uruchomione przez Symfony\Component\Form\Form::bind(). Zobacz Symfony\Component\Form\Extension\Core\EventListener\FixUrlProtocolListener (dodane przez UrlType dla przykładu)

form.set_data FilterDataEvent wyzwalane podczas domyślne dane są wiążące. Wywoływany przez: Symfony\Component\Form\Form::setData()

Polecam grzebanie w klasie Form, aby lepiej poznać, kiedy zdarzenia są uruchamiane i jak z nich korzystać.

+0

Naprawdę dziękuję, odpowiedź przyjęta! W międzyczasie mam pewne problemy z wydarzeniami związanymi z formami, jeśli masz trochę wolnego czasu, może możesz mi pomóc: http://stackoverflow.com/questions/9661026/accessing-a-form-field-from- a-subscriber-of-a-form-event-in-symfony2 – Polmonino

+14

Należy zauważyć, że ten opis zdarzeń formularzy jest ważny tylko dla komponentu Symfony 2.0 Form. Następujące zdarzenia zostały wycofane z wersji 2.1 i zostaną usunięte z wersji 2.3: 'form.bind_client_data',' form.bind_norm_data', 'form.set_data'. Począwszy od wersji 2.1, detektory zdarzeń tworzą teraz obiekt 'FormEvent' zamiast wycofanych obiektów' FilterDataEvent' i 'DataEvent', które zostaną usunięte w wersji 2.3. –

+0

Hej @xanido, twoje linki są zepsute. – Mick

Powiązane problemy