我该如何处理密码输入?

时间:2013-06-28 09:17:16

标签: symfony sonata-admin

我正在通过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')

编辑时需要新输入。

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

1 个答案:

答案 0 :(得分:1)

您应该使用不同的字段类型来创建和更新操作。在configure 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