2012-03-10 2 views
25

Это класс FormEvents из репозитория Symfony2 на github. Это связано с основной статьей, How to Dynamically Generate Forms Using Form Events.Описание событий формы Symfony2?

Кто-нибудь знает, когда эти события вызывают в потоке?

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

ответ

65

Есть два типа событий:

DataEvent - доступ только для чтения к данным формы. События «Pre» и «Post» доступны только для чтения.

FilterDataEvent - событие, которое позволяет изменять данные формы.

form.pre_bind DataEvent срабатывает перед передачей данных связан с формой. Срабатывание Symfony\Component\Form\Form::bind()

form.post_bind DataEvent срабатывает после того, как данные связаны с формой. Вызванный Symfony\Component\Form\Form::bind()

form.pre_set_data DataEvent срабатывает до того поля заполнены данными по умолчанию. Срабатывание Symfony\Component\Form\Form::setData()

form.post_set_data DataEvent срабатывает после того, как поля заполнены данными по умолчанию. Срабатывание Symfony\Component\Form\Form::setData()

form.bind_client_data FilterDataEvent срабатывает перед передачей данных связан с формой. Срабатывание Symfony\Component\Form\Form::bind()

form.bind_norm_data FilterDataEvent срабатывает после данных были нормализованы. Запущено Symfony\Component\Form\Form::bind(). См Symfony\Component\Form\Extension\Core\EventListener\FixUrlProtocolListener (добавленный в UrlType для примера)

form.set_data FilterDataEvent срабатывает в то время как данные по умолчанию обязательными. Задействовано Symfony\Component\Form\Form::setData()

Я бы рекомендовал просунуть вокруг самого класса Form, чтобы лучше понять, когда эти события активированы, и как вы можете их использовать.

+0

Действительно благодарю вас, ответ принят! Между тем у меня возникли проблемы с событиями формы, если у вас есть свободное время, возможно, вы можете немного помочь: http://stackoverflow.com/questions/9661026/accessing-a-form-field-from- a-subscriber-of-a-form-event-in-symfony2 – Polmonino

+14

Следует отметить, что это описание событий формы действует только для Symfony 2.0 Form Component. Следующие события устарели с 2.1 и будут удалены с 2.3: 'form.bind_client_data',' form.bind_norm_data', 'form.set_data'. Начиная с версии 2.1, слушатели форм-событий теперь получают объект 'FormEvent' вместо устаревших объектов' FilterDataEvent' и 'DataEvent', которые будут удалены в 2.3. –

+0

Эй @xanido, ваши ссылки сломаны. – Mick

Смежные вопросы