在Twig中渲染一个复选框;布尔预期错误

时间:2016-07-02 08:44:07

标签: symfony checkbox twig silex

我正在尝试在表单中呈现一个复选框但是出现了下一个错误:

  

Form.php第1149行中的TransformationFailedException:无法执行   转换属性路径的值“[active]”:预期为布尔值。

是的,我发送的是0或1的整数,但是twig将它们作为字符串获取并且它有意义但我真的找不到如何呈现复选框。

这是控制器:

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

这就是Twig方面:

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

有什么想法吗?

2 个答案:

答案 0 :(得分:6)

在表单中添加模型转换器为@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

答案 1 :(得分:0)

你应该添加


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

  protected $active = false;

到您的域名模型。