我在User实体上添加了一些验证规则,因为当用户未填写所有字段(尤其是密码字段)时,我遇到了一些错误。
用户实体:
/**
* @Assert\Length(
* min=8,
* max=4096,
* minMessage="Votre mot de passe n'est pas assez long.",
* maxMessage="Votre mot de passe est trop long."
* )
* @Assert\NotNull(message="Veuillez renseigner un mot de passe.")
*/
protected $plainPassword;
它可以正常使用注册表。但是,使用编辑表单时,我总是在密码字段上出现验证错误。我的编辑表单不包含密码字段。我该如何运作?
修改表单:
$builder->add('username' , IntegerType::class)
->add('nom' , TextType::class)
->add('prenom' , TextType::class)
->add('email' , EmailType::class)
->add('dateNaissance' , DateType::class)
->add('telephonePortable', TextType::class)
->add('adresse' , TextType::class)
->add('codePostal' , TextType::class)
->add('ville' , TextType::class)
->add('enabled', ChoiceType::class)
->add('photo', FileType::class)
->add('plainPassword', HiddenType::class)
->add('submit');
答案 0 :(得分:0)
我在这里遇到类似的问题。我解决了在表单生成器中而不是在Entity中声明NotBlank的问题。
我的用户类型(用于创建和编辑的表单)
class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
if ($options['newUser']) {
$builder
->add('plainPassword', RepeatedType::class, array(
'type' => PasswordType::class,
'first_options' => array('label' => 'Password'),
'second_options' => array('label' => 'Repeat Password'),
'required' => true,
'constraints' => [
new NotBlank()
]
))
->add('cpf', TextType::class)
;
}
$builder
->add('email', EmailType::class, array(
'empty_data' => '',
))
->add('name', TextType::class, array(
'empty_data' => '',
))
->add('dateOfBirth', DateType::class, array(
'format' => 'yyyy-MM-dd',
))
->add('roles', ChoiceType::class, array(
'multiple' => true,
'choices' => array(
'User' => 'ROLE_USER',
'Administrator' => 'ROLE_ADMIN',
),
))
->add(
'userAddress', UserAddressType::class, array(
'data_class' => UserAddress::class,
))->getForm();
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(
[
'data_class' => User::class,
'csrf_protection' => false,
'newUser' => null,
]);
}
}
我的实体是:
/**
* @Assert\Length(max=4096)
*/
private $plainPassword;