Symfony не волнует моя длина Assert

Я пишу проверки на Symfony для объекта пользователя, который, очевидно, имеет атрибут пароля.

namespace AppBundle\Entity;

...

class User implements UserInterface {

...

/**
* @ORM\Column(type="string")
*/
private $password;

/**
* @Assert\NotBlank(message="Veuillez indiquer un mot de passe")
* @Assert\Length(
*   min=8,
*   max=4096,
*   minMessage="Votre mot de passe doit contenir au moins {{limit}} cacactères",
*   maxMessage="Votre mot de passe ne doit pas contenir plus de {{limit}} caractères"* )
*/
private $plain_password;

...

}

Как видите, я не допускаю, чтобы пароль был пустым, и проверяю, что его длина больше или равна 8 символам.

Но кроме того, в форму регистрации я добавил подтверждение пароля благодаря типу «Repeated», предоставленному Symfony (я предпочитаю упоминать, потому что я чувствую, что это источник моей проблемы).

namespace AppBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\UrlType;
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;

class UserFormType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('email', EmailType::class)
->add('plain_password', RepeatedType::class, [
'type' => PasswordType::class,
'first_name' => 'first',
'second_name' => 'confirmation',
'invalid_message' => 'La confirmation ne correspond pas avec le mot de passe'
])
->add('firstname')
->add('lastname')
->add('city')
->add('website', UrlType::class)
->add('facebook')
->add('twitter')
->add('instagram')
->add('avatar')
->add('submit', SubmitType::class);
}

public function configureOptions(OptionsResolver $resolver) {
$resolver->setDefaults([
'data_class' => 'AppBundle\Entity\User'
]);
}
}

Теперь, когда я отправляю форму, оставляя поле пароля пустым, я получаю правильное сообщение «Veuillez indiquer un mot de passe» (Как видите французы).

Когда я отправляю форму с разными значениями в двух полях пароля, я также получаю правильное сообщение «Подтверждение не соответствует па-аве ле-де-пассе».

НО, когда я отправляю форму с одинаковыми и не пустыми значениями в двух полях пароля, но длиной менее 8; я не получают любое сообщение об ошибке и пользователь мирно сохраняется.

Значит, Симфония смеется надо мной? Я имел обыкновение иметь дело с рельсами, которые не представляют такую ​​скучную проблему …


РЕДАКТИРОВАТЬ:

Эльзасский: у меня нет группы проверки для формы

Действие контроллера:

public function signupAction(Request $request) {
$user = new User();
$form = $this->createForm(UserFormType::class, $user);
$form->handleRequest($request);

if($form->isSubmitted() && $form->isValid()) {

$em = $this->getDoctrine()->getManager();
$em->persist($user);
$em->flush();

return $this->redirectToRoute('home');
}

return $this->render('user/signup.html.twig', [
'form' => $form->createView()
]);
}

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]