我的用户实体具有几个属性:
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;我是...
将表格更改为此:
$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,
));