Описание событий формы Symfony2? - PullRequest
26 голосов
/ 11 марта 2012

Это класс FormEvents из репозитория Symfony2 на github.Это связано с основной статьей, Как динамически генерировать формы с использованием событий формы .

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

namespace Symfony\Component\Form;

/**
 * @author Bernhard Schussek <bernhard.schussek@symfony.com>
 */
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';
}

1 Ответ

66 голосов
/ 11 марта 2012

Существует два типа событий:

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, чтобы лучше понять, когда эти события запускаются, и как вы можете их использовать.

...