我的Symfony2表单中有一个下拉列表,如下所示:
$builder->add('categories','entity', array(
'class' => 'MyBundle:Myentity',
'property' => 'name',
'label' => 'Mylabel',
'expanded' => false,
'multiple' => false,
'label_attr' => array ( 'class' => 'control-label' ),
'attr' => array ( 'class' => 'form-control',
'placeholder' => 'Placeholder',
'title' => "Mytitle",
'data-toggle' => 'tooltip',
'data-myidfromDB' => '????',
'data-mynamefromDB'=>'????' etc. )));
所以我得到一个MyBundle:Myentity对象的列表,当我选择一个时,我想显示它存储在我的数据库中并在Entity类中描述的所有属性(如ID,名称等),在不同的html中data- *字段。如果我从列表中选择另一个,我希望在HTML中看到与我新选择的选项相关的所有信息(动态更改)。任何想法如何做到这一点?
答案 0 :(得分:1)
从Symfony 2.7开始,您可以将选项choice_attr
设置为ChoiceType,并将其设置为可调用接收选项作为参数。
EntityType继承此选项,在这种情况下的选择是实例化的实体,因此您可以编写如下内容:
$builder->add('categories','entity', array(
'class' => 'MyBundle:MyEntity',
'property' => 'name',
'label' => 'Mylabel',
'attr' => array('class' => 'form-control'),
'label_attr' => array('class' => 'control-label'),
'choice_attr' => function (\AppBundle\Entity\MyEntity $myEntity) {
return array(
'data-private-property' => $entity->getPrivateProperty(),
'data-some-value' => $entity->someMethod(),
);
},
);
答案 1 :(得分:0)
你不能轻易做到这一点。 但您可以在选择标签中添加更多信息。
看看 http://symfony.com/doc/current/reference/forms/types/entity.html#choice-label
Yout可以在这里添加更多字段详细信息并从您的javascript中获取。