Symfony не проверяет форму - PullRequest
0 голосов
/ 21 сентября 2018

Я пишу API.И мне нужно проверить форму.Другие формы проверяются корректно, но эта форма вообще не проверяется.

Это мой класс типов форм:

public function buildForm(FormBUilderInterface $builder, array $options){
    $builder
        ->add('passwordConfirmation', RepeatedType::class, [
            'required' => true,
            'invalid_message' => 'Passwords must match!',
            'type' => PasswordType::class
        ]);
}

/**
 * @param OptionsResolver $resolver
 */
 public function configureOption(OptionsResolver $resolver){
    $resolver->setDefaults(array(
        'data_class' => RepeatPassword::class,
        'csrf_protection' => false
    ))
 }

public function getName() {
    return 'repeatPassword';
}

Моя сущность:

class RepeatedPassword{
/**
 * @var string
 * @Assert\Length(
 *    min = 8,
 *    minMessage = "Your password must be at least {{ limit }} characters long")
 * )
 * @Assert\NotBlank()
 */
private $passwordConfirmation;

/**
 * @return mixed
 */
public function getPasswordConfirmation() {
    return $this->passwordConfirmation;
}

/**
 * @param mixed $passwordConfirmation
 */
public function setPasswordConfirmation($passwordConfirmation): void{
    $this->passwordConfirmation = $passwordConfirmation;
}
}

Метод гдеЯ пытаюсь подтвердить:

public function resetPassword(Request $request): View{
    $form = $this->createForm(RepeatPasswordType::class);
    $form->handleRequest($request);

    if ($form->isValid()) {
        $this->userService->setPassword($this->getUser(), $form->getData()->getPasswordConfirmation());
        return View::create([], Response::HTTP_OK);
    }

    return View::create($form->getErrors(), Response::HTTP_BAD_REQUEST);
 }

Мой файл config.yml:

 validation: { enabled: true, enable_annotations: true }
 serializer: { enable_annotations: true }

Отправляемые данные и ответ сервера со статусом 400:

Ответы [ 3 ]

0 голосов
/ 21 сентября 2018

Все, что я сейчас вижу, это то, что у вас есть дополнительный "," в конце вашего minMessage Assert.Вы пытались удалить его?

0 голосов
/ 21 сентября 2018

Я уже видел проблему, когда $form->handleRequest вел себя иначе, чем $form->submit.Мне удалось более эффективно отлаживать, вручную вызвав submit.

$form = $this->createForm(RepeatPasswordType::class);
if ($request->getMethod() === 'post') {
    $form->submit($request->request->get($form->getName()));
    if (!$form->isValid()) {
        // etc
    }
}
0 голосов
/ 21 сентября 2018

Может быть, это поможет: добавьте подписку в форму

'constraints' => [
                new NotNull(),
                new NotBlank(),
            ],
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...