2016-09-01 94 views
1

使用選擇類型的Symfony framwork的,我們可以決定去顯示列表,單選按鈕或複選框與兩個鍵玩:布爾值和選擇的symfony型

'multiple' => false, 
'expanded' => true, //example for radio buttons 

比方說,而不是字符串的值作爲一個陣列中的「選擇」鍵給出的不同的選擇都是布爾型:

$builder->add('myproperty', 'choice', array(
    'choices' => array(
     'Yes' => true, 
     'No' => false 
    ), 
    'label' => 'My Property', 
    'required' => true, 
    'empty_value' => false, 
    'choices_as_values' => true 
)); 

使用列表(選擇)以顯示目前存在的選擇是沒有問題的,並且當形式被顯示在正確的選擇列表中的被選中。

如果我添加了兩個鍵(多和展開),我談到之前更換由單選按鈕列表,對我的領域沒有選擇按鈕(儘管它與選擇的工作)。

有人知道這是爲什麼?

如何輕鬆地工作?

謝謝

注:實際上我認爲它不會與任何然後就像值是布爾值,並最終成爲字符串但它的作品的名單,我不知道爲什麼它不工作其他。

+0

我想'empty_value'不與單選按鈕的工作。相反,您可以使用'數據'選項強制該值。 '陣列( '必要'=>真, '數據'=>假, 'choices_as_values'=>真)' – VaN

+0

empty_value無線電按鈕工作時值不布爾值。我想一個解決方案可以爲實體創建一個變換器,但是通過框架沒有更簡單的方法 – mlwacosmos

回答

4

我會給我的回答,希望它會幫助別人。


我添加了一個數據轉換器;

$builder->add('myproperty', 'choice', array(
    'choices' => [ 
     'Yes' => '1', 
     'No' => '0' 
    ), 
    'label' => 'My Property', 
    'required' => true, 
    'empty_value' => false, 
    'choices_as_values' => true 
)); 

$builder->get('myProperty') 
    ->addModelTransformer(new CallbackTransformer(
     function ($property) { 
      return (string) $property; 
     }, 
     function ($property) { 
      return (bool) $property; 
     } 
)); 

這是神奇的:現在我有正確的單選按鈕檢查和正確的值在實體中。