首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CheckboxType上的Symfony Form Transformer : String to Bool

CheckboxType上的Symfony Form Transformer : String to Bool
EN

Stack Overflow用户
提问于 2019-02-20 04:51:33
回答 1查看 481关注 0票数 1

我有一个symfony4表单,它有一个CheckboxType,并使用字符串值('0''1')提交。现在,我想把它们转换成布尔值。当获取数据(视图转换)时,应该返回一个布尔值。我一直在关注this guide

代码语言:javascript
运行
复制
$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值甚至没有包含在输出中。

代码语言:javascript
运行
复制
// 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;
}

我还尝试了一些其他的强制转换,但它不能正确地映射值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-20 05:43:10

我发现,我必须首先通过$builder->get('box')->resetViewTransformers()重置。然后它就起作用了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54774717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档