作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 bool 字段,我已将其作为选择字段(是或否)放入表单中。
如果没有数据转换器,我会得到 0 或 1。
我添加了一个 View BooleanToStringTransformer (这似乎合理):
$builder
->add(
$builder->create('myBooleanField', 'choice', array(
'choices' => array(true => 'Yes', false => 'No'),
))
->addViewTransformer(new BooleanToStringTransformer('1'))
)
array(true => 'Yes', false => 'No')
更改了我的选择列表至 array('yes' => 'Yes', 'no' => 'No')
->addModelTransformer(new BooleanToStringTransformer('yes'))
最佳答案
答案是:我不应该认为默认的 Symfony BooleanToStringDataTransformer 正在做这项工作。它为假值而不是字符串返回 null。
所以我创建了自己的数据转换器:
<?php
use Symfony\Component\Form\DataTransformerInterface;
use Symfony\Component\Form\Exception\TransformationFailedException;
class BooleanToStringTransformer implements DataTransformerInterface
{
private $trueValue;
private $falseValue;
public function __construct($trueValue, $falseValue)
{
$this->trueValue = $trueValue;
$this->falseValue = $falseValue;
}
public function transform($value)
{
if (null === $value) {
return null;
}
if (!is_bool($value)) {
throw new TransformationFailedException('Expected a Boolean.');
}
return true === $value ? $this->trueValue : $this->falseValue;
}
public function reverseTransform($value)
{
if (null === $value) {
return null;
}
if (!is_string($value)) {
throw new TransformationFailedException('Expected a string.');
}
return $this->trueValue === $value;
}
}
关于forms - Symfony2 表单 BooleanToStringTransformer 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18528318/
我有一个 bool 字段,我已将其作为选择字段(是或否)放入表单中。 如果没有数据转换器,我会得到 0 或 1。 我添加了一个 View BooleanToStringTransformer (这似乎
我是一名优秀的程序员,十分优秀!