Symfony2 表单事件的描述?
Posted
技术标签:
【中文标题】Symfony2 表单事件的描述?【英文标题】:Description of Symfony2 form events? 【发布时间】:2012-03-27 21:49:52 【问题描述】:这是来自 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】:有两种类型的事件:
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 类本身,以便更好地了解这些事件何时被触发,以及如何使用它们。
【讨论】:
非常感谢,已采纳!同时我在表单事件方面遇到了一些问题,如果你有空闲时间,也许你可以给我一点帮助:***.com/questions/9661026/… 需要注意的是,这个表单事件的描述只对 Symfony 2.0 表单组件有效。自 2.1 起,以下事件已被弃用,自 2.3 起将被删除:form.bind_client_data
、form.bind_norm_data
、form.set_data
。从 2.1 开始,表单事件侦听器现在接收 FormEvent
对象,而不是已弃用的 FilterDataEvent
和 DataEvent
对象,这些对象将在 2.3 中删除。
嘿@xanido,你的链接坏了。
链接已更新以指向 2.0 源(如前所述,这是此答案真正适用的唯一版本)。谢谢@帕特以上是关于Symfony2 表单事件的描述?的主要内容,如果未能解决你的问题,请参考以下文章