Symfony 2:获取选择字段类型的可用选项

11

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
1个回答

17

完美,这正是我正在寻找的!即使在文档甚至API中也很难找到。你通常如何查找这样的东西? - Bonswouar
我的IDE(phpstorm)有自动完成功能。我刚刚查找了该类的所有方法,并找到了我需要的内容。当然,API文档有时也会帮助我。 - ozahorulia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接