我正在做一个论坛捆绑包,您可以在其中为您的主题添加(或不添加(投票。问题在于,只有当布尔值为真时,才需要嵌入的形式(问题和答案(。
我首先尝试了一些我在互联网上找到的解决方案,但没有任何效果。然后我创建了 2 个表单,一个有投票,另一个没有,我创建了一个带有一些 JQuery 的小开关。
问题是,当我想创建一个主题并且只填写一个表单时,HTML5 告诉我有一些字段是必需的,我没有填写另一个表单,它不仅发送我尝试提交的表单,它显然同时提交两个。
您知道我为什么以及如何解决这个问题,或者也许是一种更简单的技术来动态定义字段是否是必需的?
提前感谢!
我终于找到了解决问题的方法,所以这里是:
- 我根据需要添加嵌入表单的表单类型 false
- 我添加了一个PRE_SUBMIT,用于检查用户是否要添加投票
- 如果没有,我删除发送到我的控制器的数据(问题(
事实上,是问题产生了问题,因为它与我的主题是一对一的,这意味着我无法添加选项allow_delete(就像我对答案所做的那样(。
这是我的错误:
通过关系"..."找到了新实体未配置为级联实体的持久操作:...要解决此问题:在此未知实体上显式调用 EntityManager#persist((,或者配置级联在映射中保留此关联,例如 @ManyToOne(..,cascade={"persist"}(。如果无法找出导致问题的实体,请实施"..."以获得线索。
对于那些想看看我如何添加事件的人,这里有一个简单的代码(深受文档的启发(:
在构建窗体方法中:
->addEventListener(FormEvents::PRE_SUBMIT, array($this, 'onPreSubmit'))
然后创建另一个方法:
public function onPreSubmit(FormEvent $event)
{
$data = $event->getData();
$form = $event->getForm();
if($data['vote'])
{
}
else
{
unset($data['question']);
$event->setData($data);
}
}