我有一个symfony4表单,它有一个CheckboxType,并使用字符串值('0'或'1')提交。现在,我想把它们转换成布尔值。当获取数据(视图转换)时,应该返回一个布尔值。我一直在关注this guide。
$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;
}我还尝试了一些其他的强制转换,但它不能正确地映射值。
发布于 2019-02-20 05:43:10
我发现,我必须首先通过$builder->get('box')->resetViewTransformers()重置。然后它就起作用了。
https://stackoverflow.com/questions/54774717
复制相似问题