Symfony 2.7 выбор attr с полем EntityType


Мне нужно добавить дополнительный атрибут HTML к каждому выбору поля EntityType в Symfony 2.7.

Следуя этому руководству , я предполагаю, что 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());
              }))
Author: dmb, 2015-12-15

1 answers

Это не обязательно лучший ответ, но я пока не могу оставлять комментарии.

При реализации choice_attr, choice_labels и т. Д.... На ChoiceType и EntityType, похоже, что choice_attr был оставлен на последнем, есть несколько комментариев по этому поводу на github, мне лично нужна та же функция, надеюсь, она будет реализована.

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

P.S.: При дальнейшем исследовании он действительно унаследован от типа выбора, и он только появляется в документации 2.7, если вы напишете что-то вроде

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

Вы должны правильно установить атрибут класса, для пользовательских атрибутов, в которых я не уверен, вам может потребоваться использовать 'attr' => 'foo'.

P.P.S.: Протестировано'foo' =>'bar', и это работает, нет необходимости встраиваться в "attr".

 9
Author: ABM_Dan, 2016-02-19 09:13:49