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

Render a Checkbox in Twig; Boolean expected error

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

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

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

这是控制器:

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

这是 Twig 的一面:

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

有什么想法吗?

您应该添加


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

  protected $active = false;

到您的领域模型。

按照@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