1) Czy istnieje metoda symfony?Symfony 2: Uzyskaj dostępne opcje wyboru Pole Typ
Mam podstawową formę (nie mapowane do bazy danych), z niektórych pól wyboru, na przykład:
$builder->add('civility', 'choice', array('choices'=> array('m' => 'M.', 'mme' => 'Mme', 'mlle' => 'Mlle')))
Jak mogę - po formie został zgłosił - w akcji (lub , jeszcze lepiej, w szablonie), pobrać wartość etykiety z opcji zamiast z przesłanej postaci wartości? (W tym przypadku, Chcę być w stanie renderować „M.” w szablonie zamiast „m”)
Myślałam o czymś takim $form->get("civility")->getChoiceLabel($form->get("civility")->getData())
Ale nie mogę znaleźć coś takiego w dokumentacji (chociaż coś takiego było w Symfony1).
2) Jeśli naprawdę nie, jaki jest najlepszy sposób, aby to zrobić?
Tak więc, myślałem o tworzeniu kilka sposobów, aby to zrobić, w klasie danych wykorzystywanych przez formę, jak ..:
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];
}
Ale problemem jest to, że nie powinniśmy używać statyczne metody w szablonie gałązki (muszę uczynić go statycznym, aby móc go używać w generowaniu formularzy, w metodzie buildForm i nie duplikować niektórych kodów).
Podczas drukowania '$ form [„uprzejmości”]' nie można znaleźć etykiety, którego szukasz ? Spróbuj wydrukować pole przed i po wywołaniu 'createView' na' $ form' –