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