在 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
我正在尝试在表单中呈现一个复选框,但遇到了下一个错误:
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