10

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)如果真的没有,最好的方法是什么?

因此,我正在考虑在表单使用的数据类中创建一些方法来做到这一点,例如 .. :

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 模板中使用静态方法(我必须将其设为静态才能在表单生成、buildForm 方法中使用它,而不是重复一些代码)。

4

1 回答 1

16

您可以像这样访问选择的标签及其值:

$form->get('civility')->getConfig()->getOption('choices');

阅读更多:Symfony\Component\Form\FormConfigInterface::getOption()

于 2013-07-03T19:20:56.343 回答