Symfony2表单事件的描述?

时间:2012-03-10 23:27:45

标签: symfony symfony-forms

这是github上Symfony2存储库的FormEvents类。它与主要文章How to Dynamically Generate Forms Using Form Events相关联。

任何人都确切知道在流程中调用这些事件的时间吗?

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 个答案:

答案 0 :(得分:66)

有两种类型的事件:

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类本身周围寻找,以便更好地了解触发这些事件的时间,以及如何使用它们。