2015-12-15 16 views
5

Potrzebuję dodać dodatkowy atrybut HTML do każdego wyboru pola EntityType w Symfony 2.7.Symfony 2.7 choice_attr z polem EntityType

Po przewodniku this przyjmuję, że EntityType dziedziczy tę funkcję z ChoiceType. Próbowałem czegoś takiego, ale bez efektu; żaden atrybut typu mytype nie jest dodawany do renderowanych opcji zaznaczania.

$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()); 
       })) 
+0

Twoje opcje wyboru elementów nie mają atrybutu "mytype"? –

+0

To prawda. przepraszam, ale to źle w pytaniu; edytował to. – dmb

Odpowiedz

9

To niekoniecznie najlepsza odpowiedź, ale nie mogę jeszcze dodawać komentarzy.

Przy wdrażaniu choice_attr, choice_labels etc ... na ChoiceType i EntityType, wydaje się choice_attr zostało pozostawione na tych ostatnich, istnieje kilka uwag o tym na github, ja osobiście potrzebuję taką samą funkcję, mam nadzieję, że to będzie realizowane .

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

PS:: dalej badane, to jest rzeczywiście odziedziczony ChoiceType, a to pojawia się tylko w dokumentacji 2.7, jeśli napiszesz coś podobnego

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

warto atrybutu class ustawiony prawidłowo, dla niestandardowych atrybutów nie jestem pewien, może być konieczne użycie 'attr' => 'foo'.

P.P.S.: Przetestowano 'foo' =>'bar' i działa, nie ma potrzeby zagnieżdżania wewnątrz "attr".

+2

OMG! Gdzie znalazłeś to w dokumentach? Spędziłem wiele godzin szukając tego w dokumentach. Thnkx !!! –

Powiązane problemy