我有属性反向的实体,为此属性类型选择键入boolean和form - 复选框并始终在表单handleRequest之后我有true
为什么不理解,如果未选中复选框有"0"
但是之后提交表单有true
/**
* @var boolean
*
* @ORM\Column(name="reversed_vat", type="boolean", nullable=false, options={"default"=0})
*/
private $reversedVat;
/**
* Set reversedVat
*
* @param boolean $reversedVat
*
* @return OutboundInvoice
*/
public function setReversedVat($reversedVat)
{
$this->reversedVat = (boolean)$reversedVat;
return $this;
}
在表单中,我使用check属性创建数据转换器,但在transfomer中我有真实的
/**
* Get reversedVat
*
* @return boolean
*/
public function getReversedVat()
{
return (boolean)$this->reversedVat;
}
$builder
->add('reversedVat', CheckboxType::class, ['required' => false])
$builder->get('reversedVat')
->addModelTransformer(new CallbackTransformer(
function($mypropertyAsBoolean) {
},
function($mypropertyAsString) {
$r = $mypropertyAsString;//have always true
}
));
如果我没有检查表单handleRequest后仍然是真的吗?
答案 0 :(得分:1)
不需要dataTransformer。 CheckBoxType本身就具有变换器功能。
ReversedVat属性就在下面。
/**
* @var boolean
* @ORM\Column(name="reversed_vat", type="boolean", nullable=false, options={"default"=0})
*/
private $reversedVat = false;
/**
* @param bool $reversedVat
* @return Temp
*/
public function setReversedVat($reversedVat)
{
$this->reversedVat = $reversedVat;
return $this;
}
/**
* @return bool
*/
public function getReversedVat()
{
return $this->reversedVat;
}
确认布尔值设置为 $ reversedVat 作为默认值。
表格类型如下。
$builder
->add('reversedVat', CheckboxType::class, ['required' => false])
答案 1 :(得分:0)
在表单中,使用false_values选项。
$builder->add('reversedVat', CheckboxType::class, ['required' => false, 'false_values' => ['false', '0']])