php - CheckboxType 上的 Symfony 表单转换器:String to Bool
问题描述
我有一个 symfony4 表单,它有一个CheckboxType
并提交了字符串值('0'
或'1'
)。现在,我想将它们转换为布尔值。获取数据(视图转换)时,应返回一个布尔值。我已遵循本指南。
$builder->add('box', CheckboxType::class, [
'required' => false,
])
$builder->get('box')->addModelTransformer(new CallbackTransformer([$this, 'modelTransform'], [$this, 'modelReverseTransform']));
$builder->get('box')->addViewTransformer(new CallbackTransformer([$this, 'viewTransform'], [$this, 'viewReverseTransform']));
我尝试了以下功能,但是该box
值甚至不包含在输出中。
// view reverse transform
public function viewReverseTransform($string)
{
var_dump('viewReverseTransform', $string);
return $string === '1';
}
// view transform -> output
public function viewTransform($bool)
{
var_dump('viewTransform', $bool);
return $bool;
//return $bool === true ? '1' : '0';
}
// model reverse transform
public function modelReverseTransform($bool) {
var_dump('modelReverseTransform', $bool);
return $bool;
}
// model transform
public function modelTransform($bool) {
var_dump('modelTransform', $bool);
return $bool;
}
我还尝试了其他一些转换,但它没有正确映射值。
解决方案
我发现,我首先必须通过$builder->get('box')->resetViewTransformers()
. 然后它工作。
推荐阅读
- react-native - 如何修复“未定义不是对象(评估'this [BASE_OBJECT] [key]')”
- android - 如何在 XML 中设置 TextView 的 Drawable 的颜色 - 适用于 Android API 15?
- python - Should I use multi-rows or multi-columns with Pandas DataFrame?
- javascript - 如果字段不存在,Mongo 查询。如果存在,必须在一个范围内
- json - 你如何输入模块到邮递员?
- docker - 如何将 Docker Sonarr /tv 文件夹映射到我的 QNAP 主机媒体文件夹?
- php - 如何在 Laravel 5.8 中扩展或制作自定义 PasswordBroker sendResetLink() 方法?
- google-closure-templates - 在 Soy V2 中创建参数的正确方法是什么?
- vbscript - 使用 VBScript 使用给定的非默认配置文件打开 Outlook 2016
- python - 如何使用python和lxml中的for循环从网站链接列表中检索页面内容?