我正在通过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')
编辑时需要新输入。
如何更改行为或如何处理密码? 输入为正常输入?
答案 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
。