繁体   English   中英

由EventListener添加的Symfony2 FormBuilder订单字段

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM