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

这是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='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';
}