duanlushen8940 2019-02-19 20:51
浏览 47
已采纳

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

I have a symfony4 form that has a CheckboxType and submitted with string values ('0' or '1'). Now, I want to convert them to booleans. When getting the data (view transform), a boolean value should be returned. I have followed 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']));

I tried the following functions, but then, the box value is not even included in the output.

// 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;
}

I tried also some other casting, but it doesn't map the values correctly.

  • 写回答

1条回答 默认 最新

  • dqe9657 2019-02-19 21:43
    关注

    I found out, that I first have to reset via $builder->get('box')->resetViewTransformers(). Then it works.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?