CheckboxType 上的 Symfony 表单转换器:String 到 Bool
Symfony Form Transformer on CheckboxType: String to Bool
我有一个 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;
}
我也尝试了其他一些转换,但它没有正确映射值。
我发现,我首先必须通过 $builder->get('box')->resetViewTransformers()
进行重置。然后就可以了。
我有一个 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;
}
我也尝试了其他一些转换,但它没有正确映射值。
我发现,我首先必须通过 $builder->get('box')->resetViewTransformers()
进行重置。然后就可以了。