2014-01-08 47 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