实体(具有约束)+ createFormBuilder(具有额外字段)失败

问题描述 投票:0回答:1

我的用户实体具有几个属性:

private $id;
/**
Assert\Email
*/
private $email;
/**
 * @Assert\Length( min=6, minMessage="Password is too short (min 6 symbols)" )
 */
private $password;

我正在尝试创建用于更改密码的表单:

createFormBuilder(null, ??? data-class=UserEntity ??? )
->add('YES_CHANGE_PASS',CheckboxType::class,['required'=>false])
->add('old_password',PasswordType::class,['required'=>false])
->add('new_password', RepeatedType::class,['required'=>false])

问题:如果我将'data-class = UserEntity :: class'设置为此表格,它将停止工作(当然,因为我的Entity没有OLD_PASSWORD \ NEW_PASSWORD属性)。如果我不设置'data-class',则Form显然不会继承任何约束(例如密码@Assert \ Length(min = 6)约束)

解决方案1,我不喜欢:直接在createFormBuilder函数中对所有需要的约束进行硬编码。我不喜欢这种方式,因为如果有一天我想更改密码minLength,我将不得不遍历整个项目,寻找此类表格来进行编辑]

解决方案2疯狂:将所有其他字段添加到我的Entity,这样它就可以让我使用'data-class:UserEntity'...和约束...并进行验证...但这显然是一个不明智的解决方案]] >

有任何提示吗?

我的用户实体具有几个属性:private $ id; / ** Assert \ Email * /私人$ email; / ** * @Assert \ Length(min = 6,minMessage =“密码太短(至少6个符号)”))* / private $ password;我是...

forms symfony constraints entity
1个回答
1
投票

将表格更改为此:

$form=$this->createFormBuilder()
     ->add('YES_CHANGE_PASS', CheckboxType::class, array(
         'mapped'=>false,
         'required'=>false,
     ))
     ->add('old_password', PasswordType::class, array(
         'mapped'=>false,
         'required'=>false,
     ))
     ->add('new_password', RepeatedType::class, array(
         'mapped'=>false,
         'required'=>false,
     ));
© www.soinside.com 2019 - 2024. All rights reserved.