我必须管理2个实体:map
和layergroup
。在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'
元素之间。
我该怎么办?请帮忙!!!