Prima di Symfony 2.7, il valore attr
per un campo choice
si applicava solo al campo stesso, ovvero l'elemento <select>
reso. L'ho usato per applicare le classi a questo elemento per modellarlo.Come posso evitare di applicare attr a tutte le opzioni del mio campo di scelta?
In Symfony 2.7 questo comportamento è stato modificato. Ora, tutti i <option>
figli dell'elemento <select>
ottengono anche gli stessi attributi (commit of the change) e quindi le classi.
Per qualche chiarimento, lasciate che questo sia il codice:
<?php echo $view['form']->widget($form['myField'], ['attr' => ['class' => "text ui-widget-content ui-corner-all"]]); ?>
Allora questo è l'uscita di Symfony < = 2.6:
<select class="text ui-widget-content ui-corner-all" name="myField">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
E questa è l'uscita di Symfony> = 2.7:
<select class="text ui-widget-content ui-corner-all" name="myField">
<option value="1" class="text ui-widget-content ui-corner-all">Option 1</option>
<option value="2" class="text ui-widget-content ui-corner-all">Option 2</option>
</select>
Le classi che si applicano non sono adatte per gli elementi <option>
poiché definiscono i bordi e simili per il campo effettivo. Si noti che queste sono classi definite dall'interfaccia utente jQuery, quindi non posso modificare facilmente la loro definizione.
Qual è il modo più semplice per evitare l'applicazione di queste classi a tutti <option>
elementi di un campo choice
pur applicandolo all'elemento <select>
?
Forse è un bug. Perché non ho trovato nulla nel UPGRADE-2.7 per questo, e quella funzionalità è ciò che l'opzione ''choice_attr'' dovrebbe fare. – user2268997
@ user2268997 Sì, non sono riuscito a trovare nulla, ma guardando il codice che ho collegato sembra molto intenzionale per me. – Chris
Non conosco molto i modelli di PHP, ma sembra che 'attr' sia risolto da '$ choice' che è un'istanza' ChoiceView', creata da 'DefaultChoiceListFactory', e viene passata l'opzione' choice_attr' a quella fabbrica nella definizione 'ChoiceType'. (se non si fornisce il proprio' ChoiceList' ofcourse) – user2268997