SonataAdminBundle设置NULL $ formMapper

时间:2013-04-02 08:10:10

标签: symfony null sonata-admin

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

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

1 个答案:

答案 0 :(得分:0)

让我建议在symfony2和sonata-admin

中实现这一目标的有效方法

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

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

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

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
    ;
}

希望有所帮助! 干杯, 文斯