![](/img/trans.png)
[英]Symfony2 and FormBuilder: How to get the elemetns number added in the builder
[英]Symfony2 FormBuilder order fields added by EventListener
我正在尝试仅在创建新条目时显示一些表单字段。 我使用symfony食谱中的这篇文章来做到这一点 。 问题是,EventListener添加的字段进入表单的底部(我的实际表单包含更多字段)。 所以我得到了field2,field3,field1。 如何通过不修改模板将该字段移到顶部?
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
$task = $event->getData();
$form = $event->getForm();
//add just for new entity
if (!$task || null === $task->getId()) {
$form->add('field1', null);
}
});
$builder->add('field2', null);
$builder->add('field3', null);
}
只需使用例如隐藏的输入在表单构建器中为此字段保留位置。 事件侦听器将覆盖此字段。
$builder->add('field1', 'hidden');
$builder->add('field2', null);
$builder->add('field3', null);
如Qoop所述,Symfony中没有此类功能,但有捆绑包 。
使用此捆绑包的简单解决方案:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
$task = $event->getData();
$form = $event->getForm();
//add just for new entity
if (!$task || null === $task->getId()) {
$form->add('field1', null, array('position' => 'first'));
}
});
$builder->add('field2', null);
$builder->add('field3', null);
}
还有更多订购功能,请查看捆绑包的文档 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.