Symfony 如何处理密码输入?

Symfony 如何处理密码输入?,symfony,sonata-admin,Symfony,Sonata Admin,我正在通过SonataAdminBundle管理用户表 protected function configureFormFields(FormMapper $formMapper){ $formMapper ->with('General') ->add('username') ->add('email') ->add('plainPassword','text',array('required' =

我正在通过SonataAdminBundle管理用户表

protected function configureFormFields(FormMapper $formMapper){ 
    $formMapper    
    ->with('General')   
     ->add('username')    
     ->add('email') 
     ->add('plainPassword','text',array('required' => false))
编辑现有用户数据时,我将密码输入留空。 没问题,密码保持不变

但是,我在创建新项目时忘记输入密码。 它显示SQL错误(密码在数据库中具有必需属性)

但是如果我删除了required=>false属性

->add('plainPassword','text')
编辑时需要新的输入

如何更改行为或如何处理密码
作为正常输入输入?

创建和更新操作应使用不同的字段类型。在配置表单字段中:

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

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

我不知道如何准确地设置
$isCreateAction
,但也许您可以检查
Admin::getSubject()
方法?里面有一个获取id的例程。如果没有设置id,那么动作类型是
create

谢谢!我使用“$this->getSubject()->getId()”它解决了我的问题。