2013-06-28 45 views
0

我被SonataAdminBundle我如何處理密碼輸入?

protected function configureFormFields(FormMapper $formMapper){ 
    $formMapper  
    ->with('General') 
    ->add('username')  
    ->add('email') 
    ->add('plainPassword','text',array('required' => false)) 

管理用戶表,我離開密碼輸入欄,當我編輯現有的用戶數據。 可以,密碼保持不變。

但是我在創建新項目時忘記了輸入密碼。 它顯示了SQL錯誤(密碼需要在數據庫屬性)

,但如果我刪除了要求=> false屬性,

->add('plainPassword','text') 

它需要在編輯新的輸入。

如何更改行爲或如何處理密碼 作爲正常輸入的輸入?

回答

1

您應該使用不同的字段類型來創建和更新操作。在你的配置configureFormFields:

protected function configureFormFields(FormMapper $formMapper) 
{ 
    // ... 

    if ($isCreateAction) { 
     $formMapper->add('plainPassword','text'); 
    } 
    else { 
     $formMapper->add('plainPassword','text', array('required' => false)); 
    } 
} 

我不知道如何設置$isCreateAction完全是,但也許你可以檢查Admin::getSubject()方法?裏面有一個例程來獲取GET ID。如果沒有設置id,則動作類型爲create

+0

謝謝!我使用'$ this-> getSubject() - > getId()'它解決了我的問題。 – whitebear