2016-07-02 2 views
0

私は、フォーム内のチェックボックスをレンダリングしようとしているが、次のエラーを得ています:Twigでチェックボックスをレンダリングします。ブール予想エラー

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

は、モデル変圧器を追加します。ここ

$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; 

を追加する必要があります。 @Rinatが示唆したように、フォームで

+0

私はこのアプリでモデルのレイヤーを持っていません。コントローラ上でSQLリクエストを実行する。 –

+3

この場合は、CallbackTransformerとaddViewTransformerを見てください。 – Rinat

関連する問題