Symfony 表单类型选择字段布尔值始终为真



我有属性反转的实体,为此属性类型选择键入布尔值和表单 - 复选框并始终在表单句柄请求我true为什么不理解,如果未选中复选框有"0"但提交表单后有true

/**
* @var boolean
*
* @ORMColumn(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;
}

在形式上,我创建了带有检查属性的数据转换器,但在转换器中我有 true

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

如果我没有检查在表单句柄请求后仍然有 true ?

如果你使用的是symfony>= 4.1,在你的表单类型中使用false_values选项。

$builder->add('reversedVat', CheckboxType::class, ['required' => false, 'false_values' => ['false', '0']])

dataTransformer 不是必需的。 CheckBoxType 本身具有转换器功能。

反向增值税属性就在下面。

/**
* @var boolean
* @ORMColumn(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])

最新更新