Symfony 2.7 choice_attr 带有 EntityType 字段
Symfony 2.7 choice_attr with EntityType field
我需要为 Symfony 2.7 中 EntityType 字段的每个选择添加一个额外的 HTML 属性。
按照 this 指南,我假设 EntityType 从 ChoiceType 继承了这个特性。我尝试了类似以下的方法,但没有效果;没有 mytype 属性被添加到渲染的 select 选项中。
$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());
}))
这不一定是最佳答案,但我还不能 post 发表评论。
当在 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'.
中
我需要为 Symfony 2.7 中 EntityType 字段的每个选择添加一个额外的 HTML 属性。
按照 this 指南,我假设 EntityType 从 ChoiceType 继承了这个特性。我尝试了类似以下的方法,但没有效果;没有 mytype 属性被添加到渲染的 select 选项中。
$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());
}))
这不一定是最佳答案,但我还不能 post 发表评论。
当在 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'.