0

如果输入中没有写入任何内容,如何设置字段 NULL ?

我想要一个复选框来 NULLIFY 该字段。(即使字段为空,mysql字段也需要NULL)

4

1 回答 1

0

让我建议一种在 symfony2 和 sonata-admin 中实现这一目标的有效方法

专门用于具有 nullable = true 的布尔字段(nb:symfony2 中的 mysql 字段布尔实际上是 tinyint:1)

一旦它被编辑,这样的字段通常会传递给 true 但如果你拦截请求并评估给定字段的值,你可以像这样修改它:

在您的管理类中,假设对象的属性是属性

public function prePersist($object)
{
    if (in_array($object->getProperty(), array(NULL, '', '3',)))
        $object->setProperty(NULL);
}

public function preUpdate($object)
{
    if (in_array($object->getProperty(), array(NULL, '', '3',)))
        $object->setProperty(NULL);
}

数字 3 是我在我的案例中为需要 null 的选择实现的

protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('property', 'choice', array(
            'choices' => array(
                '3' => 'Yes and No',
                '0' => 'No',
                '1' => 'Yes',
            ),
            'empty_value' => false,// unset this and empty would work also
            'required' => false,
        ))
    //    ->add('property', null, array('required' => false))// checkbox if bool
    ;
}

希望有帮助!干杯,文斯

于 2013-08-21T08:23:45.687 回答