Symfony2获取选择文本

时间:2014-01-08 09:36:44

标签: symfony

如果我在表单选择中使用整数作为值...

$builder
    ->add('name')
    ->add('phone')
    ->add('time', 'choice', array(
        'choices' => array(
            1 => 'Morning',
            2 => 'Afternoon'
        )
    ))

有没有办法访问选项文本?

我的意思是,如果我将2存储在我的实体上,我该如何呈现Afternoon

1 个答案:

答案 0 :(得分:1)

你不能或不应该按照你提到的方式这样做。正确的方法是创建一个选项解析器,它将知道哪个选项与哪个id(它可能是实体或简单集合)相关,并且可以返回可用选项列表。

$builder
    ->add('name')
    ->add('phone')
    ->add('time', 'choice', array(
        'choices' => $optionsCollection->getList()
    ));

您可以从实体

获取选项
$optionsCollection->getOption( $entity->getTime() );

另一方面,您可以使用id来定义数组,但使用正确的值:

->add('time', 'choice', array(
        'choices' => array(
            'Morning' => 'Morning',
            'Afternoon' => 'Afternoon'
        )

这也是一些解决方案,实施起来要快得多。

问候,Piotr