在 Formbuilder::add() 中配置 EntityType 时访问 class 的属性和方法
Access properties and methods of a class while configuring EntityType in Formbuilder::add()
我的 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 对象的列表,当我选择一个对象时,我想显示它的所有属性(如 ID、名称等),这些属性存储在我的数据库中并在实体 class,在不同的 html data-* 字段中。如果我 select 列表中的另一个,我想在 HTML 中查看与我新 selected 选项相关的所有信息(动态更改)。有什么想法吗?
你不能简单地做到这一点。
但是您可以在 select 标签中添加更多信息。
看看
http://symfony.com/doc/current/reference/forms/types/entity.html#choice-label
您可以在此处放置更多字段详细信息并从您的 javascript 中获取。
从 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(),
);
},
);
我的 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 对象的列表,当我选择一个对象时,我想显示它的所有属性(如 ID、名称等),这些属性存储在我的数据库中并在实体 class,在不同的 html data-* 字段中。如果我 select 列表中的另一个,我想在 HTML 中查看与我新 selected 选项相关的所有信息(动态更改)。有什么想法吗?
你不能简单地做到这一点。 但是您可以在 select 标签中添加更多信息。
看看 http://symfony.com/doc/current/reference/forms/types/entity.html#choice-label
您可以在此处放置更多字段详细信息并从您的 javascript 中获取。
从 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(),
);
},
);