2015-12-15 12 views
5

Ho bisogno di aggiungere un attributo HTML aggiuntivo a ciascuna scelta di un campo EntityType in Symfony 2.7.Symfony 2.7 choice_attr con campo EntityType

Seguendo la guida this, presumo che EntityType erediti questa funzionalità da ChoiceType. Ho provato qualcosa di simile al seguente, ma senza effetto; nessun attributo mytype viene aggiunto alle opzioni di selezione renderizzate.

$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

gli elementi delle opzioni di scelta non hanno attributo "mytype"? –

+0

giusto. scusa, ho sbagliato nella domanda; lo ha modificato – dmb

risposta

9

Questa non è necessariamente la risposta migliore, ma non posso ancora postare commenti.

Nell'attuare choice_attr, choice_labels ecc ... su ChoiceType e EntityType, sembra che choice_attr è stato lasciato dietro su questi ultimi, ci sono un paio di commenti su di esso su GitHub, io personalmente bisogno la stessa caratteristica, si spera che sarà implementato .

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

P.S.: Indagato inoltre, si è infatti ereditato da ChoiceType, e appare solo nella documentazione 2.7, se si scrive qualcosa di simile

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

Si dovrebbe ottenere l'attributo di classe impostato correttamente, per gli attributi personalizzati non sono sicuro, potrebbe essere necessario utilizzare 'attr' => 'foo'.

P.P.S.: Testato 'foo' =>'bar' e funziona, non è necessario nidificare all'interno di "attr".

+2

OMG! Dove l'hai trovato nei documenti? Ho passato ore a cercare questo nei documenti. Thnkx !!! –

Problemi correlati