Symfony 3.4 - 在控制器中的特定位置添加元素

时间:2018-03-09 06:20:51

标签: php arrays symfony doctrine-orm symfony-forms

我必须管理2个实体:maplayergroup。在layergroup obj中,有一个引用map的字段。 我在cmd生成了代码,并在表单文件夹中修改了layerGroupType,以删除mapid中添加的Controller元素,以便我可以自定义从地图中获取的选项列表表。

以下是代码: 在表单/ layerGroupType.php中:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('groupName', TextType::class, array('label'=>Group Name:','label_attr' => ['class' => 'col-sm-4 control-label'],'attr' => ['class' => 'form-control']))
        ->add('description', TextareaType::class, array('label'=>Description:','label_attr' => ['class' => 'col-sm-4 control-label'],'attr' => ['class' => 'form-control']));
}

在控制器中:

$form = $this->createForm('AppBundle\WmapBundle\Form\LayerGroupType', $layerGroup);
    $em = $this->getDoctrine()->getManager();
    $maps = $em->getRepository('AppBundleWmapBundle:Map')->findAll();
    $mapsArr=array();
    $noMaps=count($maps);
    if ($noMaps>0){
        foreach ($maps as $map) {
            $mapsArr[(string)$map->getMapTitle()]=(string)$map->getId();
        }
    }
    $form->add('mapid',ChoiceType::class,array(
        'before' => 'description',
        'label'=>'In the map:',
        'choices'  => $mapsArr,
        'label_attr' => ['class' => 'col-sm-4 control-label'],'attr' => ['class' => 'form-control'])
    );

一切都很好。但是,当我渲染时,新元素将被置于表单的末尾。这对用户体验不利。我想将这个新元素放在'groupName''description'元素之间。

我该怎么办?请帮忙!!!

0 个答案:

没有答案