2013-04-02 23 views
0

如何在輸入中未寫入任何內容時設置字段NULL?

我想有一個複選框來NULLIFY字段。 (即使該字段爲空,需要在MySQL領域NULL)

回答

0

讓我提出一個有效的方式來完成,在Symfony2中和奏鳴曲管理員

專門用於可空=真 (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是我在我的情況下,實施了一個選擇在需要空

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

希望幫助! 乾杯, 文斯

+0

你這樣做你的所有財產?我不明白什麼是$ object – ibasaw

+0

實際上,對於那些你需要... $ object是真正的你正在管理的實體...它可以是例如具有已發佈屬性的文章。 (可能是之間的國旗,既不是0也不是1,表示它處於驗證狀態......) 在這種情況下,腳本將如下所示: $ object-> getPublished()和$ object- > setPublished(NULL) – MediaVince