1)是否有Symfony的方法?
我有一个基本表单(未映射到数据库),其中包含一些选择字段,例如:
$builder->add('civility', 'choice', array('choices'=> array('m' => 'M.', 'mme' => 'Mme', 'mlle' => 'Mlle')))
在表单提交后,我想在操作中(或者更好的是在模板中)检索选项的标签值,而不是表单提交的值。 (在这种情况下,我想在模板中呈现“M。”而不是“m”)。我考虑了类似于$form->get("civility")->getChoiceLabel($form->get("civility")->getData())
的方法,但是我在文档中没有找到这样的内容(尽管Symfony1中有类似的内容)。
2)如果真的没有,最好的方法是什么?
因此,我考虑创建一些方法来完成这项工作,在表单使用的Data Class中,例如.. :
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];
}
但问题是,在Twig模板中我们不应该使用静态方法(我必须将其设为Static,以便在表单生成中使用它,即在buildForm方法中,而不会重复某些代码)。
$form['civility']
时,找不到您要查找的标签?尝试在调用$form
上的createView
之前和之后打印该字段。 - Thomas Potaire