2016-07-02 59 views
0

我試圖呈現一個表單內複選框,但得到了一個錯誤:呈現樹枝上的複選框;布爾預期的錯誤

TransformationFailedException in Form.php line 1149: Unable to transform value for property path "[active]": Expected a Boolean.

是的,我送是整數0或1,但樹枝讓他們爲字符串,它有感覺,但我真的無法找到如何渲染複選框。

這是控制器:

$form = $form->add('active', 'checkbox', array('label' => 'User active?','required' => false)); 

這是細枝面:

{{ form_widget(form.active, { attr: { 'class': 'form-control' }}) }} 

任何想法?

回答

4

在表單中添加一個模型變壓器作爲@Rinat建議:

$form->add('active', 'checkbox', array('label' => 'User active?','required' => false)); 
$form->get('active') 
    ->addModelTransformer(new CallbackTransformer(
     function ($activeAsString) { 
      // transform the string to boolean 
      return (bool)(int)$activeAsString; 
     }, 
     function ($activeAsBoolean) { 
      // transform the boolean to string 
      return (string)(int)$activeAsBoolean; 
     } 
    )); 

更多細節在這裏:http://symfony.com/doc/current/cookbook/form/data_transformers.html

0

您應該添加


    /** 
    * @ORM\Column(type="boolean") 
    */ 

    protected $active = false; 

到你的域模型。

+0

我沒有在這個應用程序的模型層。在控制器上執行sql請求。 –

+3

在這種情況下可能會看看CallbackTransformer和addViewTransformer – Rinat