0

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

编辑时需要新的输入。

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

4

1 回答 1

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.

于 2013-07-07T10:09:20.007 回答