Php 在Formbuilder::add()中配置EntityType时访问类的属性和方法
我的Symfony2表格中有一个下拉列表,如下所示:Php 在Formbuilder::add()中配置EntityType时访问类的属性和方法,php,symfony,symfony-forms,Php,Symfony,Symfony Forms,我的Symfony2表格中有一个下拉列表,如下所示: $builder->add('categories','entity', array( 'class' => 'MyBundle:Myentity', 'property' => 'name', 'label' => 'Mylabel', 'expanded' => false,
$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对象的列表,当我选择一个对象时,我希望在不同的html数据-*字段中显示它的所有属性(如ID、名称等),这些属性存储在我的数据库中,并在Entity类中描述。如果我从列表中选择另一个选项,我希望在HTML中查看与新选择的选项相关的所有信息(动态更改)。你知道怎么做吗?你不能轻易做到。 但您可以在“选择标签”中添加更多信息 观看
您可以在此处输入更多字段详细信息,并从javascript中获取它。自Symfony 2.7以来,您可以将选项
choice\u 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(),
);
},
);
我试图使用
选项标签
,但实际上,下拉列表中的所有选项名称都被数据库中的ID替换了。事实上,我需要在HTML代码中显示这些ID(在选项标记中)。谢谢您您还可以为entity_小部件创建自己的渲染,并在选项标签中添加更多详细信息。我认为有可能在twig中获得其他字段值。尝试将其转储到vendor/symfony/symfony/src/symfony/Bridge/Twig/Resources/views/Form/Form\u div\u layout.html.Twig的{%-block choice\u widget\u options-%}
中