CheckboxType上的Symfony Form Transformer:从字符串到Bool

时间:2019-02-19 20:51:33

标签: php symfony symfony4

我有一个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;
}

我也尝试了其他一些强制转换,但它无法正确映射值。

1 个答案:

答案 0 :(得分:0)

我发现,我首先必须通过$builder->get('box')->resetViewTransformers()进行重置。然后就可以了。