具有EntityType字段

时间:2015-12-15 13:16:10

标签: php symfony symfony-forms symfony-2.7

我需要为Symfony 2.7中的每个EntityType字段选择添加一个额外的HTML属性。

遵循this指南,我假设EntityType从ChoiceType继承了此功能。我尝试了类似下面的内容,但没有效果;没有mytype属性被添加到渲染的选择选项。

$builder->add('customer_email', 'email')
        ->add('Product', 'entity', array(
              'class' => 'MyBundle:Product',
              'property' => 'name',
              'empty_value' => 'None',
              'required' => false,
              'choice_attr' => function ($val, $key, $index) {
                  return array('mytype' => $val->getType());
              }))

1 个答案:

答案 0 :(得分:9)

这不一定是最好的答案,但我还不能发表评论。

在ChoiceType和EntityType上实现choice_attr, choice_labels等等时,似乎choice_attr落后于后者,在github上有一些关于它的评论,我个人需要相同的功能希望它能够实施。

https://github.com/symfony/symfony/issues/4067

P.S。:进一步调查,它确实是从ChoiceType继承而来的,它只出现在2.7文档中,如果你写的是

'choice_attr' => function (Product $product, $key, $index) {
    return ['class' => $product->getType() ];
}

您应该正确设置class属性,对于我不确定的自定义属性,您可能需要使用'attr' => 'foo'

P.P.S :经过测试'foo' =>'bar'并且它有效,无需嵌套在内部' attr'。