Symfony表单类型选择字段boolean始终为true

时间:2017-02-15 12:33:54

标签: php forms symfony

我有属性反向的实体,为此属性类型选择键入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后仍然是真的吗?

2 个答案:

答案 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']])