2013-06-28 4 views
0

Я управляю таблицей пользователей по SonataAdminBundleКак я могу обрабатывать ввод пароля?

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

Я оставляю ввод пароля пустым, когда я изменить существующие пользовательские данные. Все в порядке, пароль сохранен как тот же.

Однако я забыл ввести пароль при создании нового элемента. Это показывает ошибку SQL (пароль требуется атрибут в базе данных)

, но если я удалил требуется => ложный атрибут,

->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. Если идентификатор не установлен, то тип действия - create.

+0

Спасибо! Я использую '$ this-> getSubject() -> getId()', он решил мою проблему. – whitebear