forms - Symfony2 : get post data from PRE_SET_DATA event

标签 forms symfony events

我有一个带有绑定(bind)选择的表单,即更改 select 1 可能会更新 select 2,而 select 2 可能会更新 select 3 等等。

为了给我的选择提供正确的“选择”(只有少数应该在加载时显示,另一个在更改选择后显示。在 POST 之后,还应该设置正确的选择),我设置了一个事件监听器在 PRE_SET_DATA 事件上。

在这个监听器中,我有:

$updatetodate_object = $event->getData();
$form = $event->getForm();

问题是我的 $updatetodate_object 不是最新的,在 POST 之后仍然有来自数据库的值而不是用户的数据,而我需要更新的值来构建“选择”。

我也试过:

$form->getData()

返回异常:

A cycle was detected. Listeners to the PRE_SET_DATA event must not call setData(). 
You should call setData() on the FormEvent object instead. 

有什么想法吗?

最佳答案

这是根据 http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html#dynamic-generation-for-submitted-forms 预期的行为

However, things get more difficult when you handle the form submission. This is because the PRE_SET_DATA event tells us the data that you're starting with (e.g. an empty SportMeetup object), not the submitted data.

你应该尝试另一个事件。 PRE_SUBMIT 是您可以获得提交数据的第一个位置。

http://symfony.com/doc/current/components/form/form_events.html#submitting-a-form-formevents-pre-submit-formevents-submit-and-formevents-post-submit

关于forms - Symfony2 : get post data from PRE_SET_DATA event,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28856261/

相关文章:

html - 带有按钮的可扩展目录

javascript - Rails/Ajax 将表单从创建更改为提交后更新

javascript - 打开 div 按钮不起作用

php - Symfony2 1553 mysql 错误修复

symfony - 如何在 FOSUserBundle 中明确禁用注册

JavaScript:删除事件监听器

javascript - FullCalendar - ListView 多日事件未正确分组

HTML5 oninput 属性中的 JavaScript Action ?

c# - 模型值在回发期间丢失

php - Symfony 2.1 跨子域安全