Symfony2表单事件的描述?
这是github上Symfony2存储库中的Symfony2表单事件的描述?,symfony,symfony-forms,Symfony,Symfony Forms,这是github上Symfony2存储库中的FormEvents类。这是从主文链接的 有人知道流中何时调用这些事件吗? namespace Symfony\Component\Form; /** *@作者伯恩哈德·舒塞克 */ 期末班活动 { const PRE_BIND='form.PRE_BIND'; const POST_BIND='form.POST_BIND'; const PRE_SET_DATA='form.PRE_SET_DATA'; const POST_SET_DATA='f
FormEvents
类。这是从主文链接的
有人知道流中何时调用这些事件吗?
namespace Symfony\Component\Form;
/**
*@作者伯恩哈德·舒塞克
*/
期末班活动
{
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';
}
有两种类型的事件:
-对表单数据的只读访问。”“前”和“后”事件是只读的
-允许修改表单数据的事件
表单预绑定
DataEvent
在数据绑定到表单之前触发。由Symfony\Component\Form\Form::bind()触发
表单。后绑定
DataEvent
数据绑定到表单后触发。由Symfony\Component\Form\Form::bind()触发
表单。预设置数据
DataEvent
在用默认数据填充字段之前触发。由Symfony\Component\Form\Form::setData()触发
表单。发布集合数据
DataEvent
在用默认数据填充字段后触发。由Symfony\Component\Form\Form::setData()触发
表单绑定客户端数据
FilterDataEvent
在数据绑定到表单之前触发。由Symfony\Component\Form\Form::bind()触发
表单.绑定规范数据
FilterDataEvent
数据规范化后触发。由Symfony\Component\Form\Form::bind()
触发。参见Symfony\Component\Form\Extension\Core\EventListener\FixUrlProtocolListener
(示例由UrlType
添加)
表单。设置数据
FilterDataEvent
在绑定默认数据时触发。由Symfony\Component\Form\Form::setData()触发
我建议您仔细查看表单类本身,以便更好地了解这些事件是何时触发的,以及如何使用它们。非常感谢您,答案已被接受!与此同时,我在表单事件方面遇到了一些问题,如果您有一些空闲时间,也许您可以给我一些帮助:应该注意的是,表单事件的此描述仅对Symfony 2.0表单组件有效。以下事件从2.1起已被弃用,并将从2.3起被删除:表单.绑定客户机数据
,表单.绑定规范数据
,表单.设置数据
。从2.1开始,表单事件侦听器现在接收一个FormEvent
对象,而不是弃用的FilterDataEvent
和DataEvent
对象,这些对象将在2.3中删除。嘿@xanido,您的链接已断开。链接更新为指向2.0源代码(如前所述,这是此答案真正适用的唯一版本)。谢谢@Patt
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';
}