如果输入中没有写入任何内容,如何设置字段NULL?
我想要一个NULLIFY字段的复选框。 (即使该字段为空,在mysql字段中需要NULL)
答案 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
;
}
希望有所帮助! 干杯, 文斯