2014-01-08 23 views
0

如果我使用一个整数作为一种形式的选择值...Symfony2中得到选择文本

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

是否有访问选项文本的方法吗?

我的意思是,如果我在我的实体上存储2,应该如何渲染Afternoon

回答

1

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

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

而且你可以从实体

$optionsCollection->getOption($entity->getTime()); 

选项。另一方面,您可以定义不IDS但适当的值的数组:

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

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

问候,Piotr