Php 在Formbuilder::add()中配置EntityType时访问类的属性和方法

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,

我的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对象的列表,当我选择一个对象时,我希望在不同的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-%}