我有一个带有绑定选择的表单,i.a。改变选择1可以更新选择2,其可以更新选择3等等。
为了给我的选择提供正确的“选择”(只有少数应该在加载时显示,另一个在更改选择后显示。在POST后,还应该设置正确的选项),我设置一个事件监听器在PRE_SET_DATA事件上。
在这个听众中,我有:
$updatetodate_object = $event->getData();
$form = $event->getForm();
问题是我的$ updatetodate_object不是最新的,在POST之后仍有来自DB的值而不是用户的数据,而我需要更新的值来构建“选择”。
我也尝试过:
$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.
有什么想法吗?
答案 0 :(得分:3)
但是,当您处理表单提交时,事情变得更加困难。这是因为PRE_SET_DATA事件告诉我们您开始使用的数据(例如空的SportMeetup对象),而不是提交的数据。
你应该尝试另一个活动。 PRE_SUBMIT是您可以获取提交数据的第一步。
答案 1 :(得分:0)
最后我使用了PRE_SUBMIT事件。它给了我一个值数组而不是形成的对象,但它没关系。奇怪的是,使用SUBMIT事件,它返回一个对象,但子表单在主对象之前返回,这对我来说很烦人。