1) Esiste un metodo symfony?Symfony 2: Ottieni le opzioni disponibili per una scelta Tipo di campo
Ho una forma di base (non mappato al database), con alcuni campi di scelta, ad esempio:
$builder->add('civility', 'choice', array('choices'=> array('m' => 'M.', 'mme' => 'Mme', 'mlle' => 'Mlle')))
Come posso - dopo che il modulo è stato Inserito - nell'azione (o , ancora meglio, nel modello), recupera il valore dell'etichetta dell'opzione anziché il valore inviato dal modulo? (In questo caso, voglio essere in grado di rendere "M" nel modello invece di "m")
Stavo pensando a qualcosa di simile $form->get("civility")->getChoiceLabel($form->get("civility")->getData())
Ma non ho trovato qualcosa di simile nella documentazione (anche se c'era qualcosa di simile in Symfony1).
2) Se davvero no, qual è il modo migliore per farlo?
Così, stavo pensando di creare alcuni metodi per farlo, nella classe di dati utilizzato dal modulo, come ..:
private $choices = array("civility" => array('m' => 'M.', 'mme' => 'Mme', 'mlle' => 'Mlle'));
static public function getChoiceLabel($choice_value, $field_name)
{
return self::$choices[$field_name][$choice_value];
}
static public function getChoices($field_name)
{
return self::$choices[$field_name];
}
Ma il problema è che noi non dovremmo usare metodi statici nel template di ramoscello (devo renderlo statico per poterlo usare nella generazione di moduli, il metodo buildForm, e non duplicare del codice).
Quando si stampa '$ form [ 'civiltà']' non riuscite a trovare le etichette che stai cercando ? Prova a stampare il campo prima e dopo aver chiamato 'createView' su' $ form' –