Я использую Symfony Form 4.2 в автономном режиме.У меня есть элемент формы с несколькими полями в файле HTML.Чтобы иметь возможность проверки в PHP, я реплицировал форму в PHP, используя Symfony Form 4.2, как показано ниже:
$formFactory = Forms::createFormFactoryBuilder()
->addExtension(new ValidatorExtension($validator))
->getFormFactory();
$form = $formFactory->createBuilder()
->add('pk_firstname', TextType::class, [
'constraints' => [new NotBlank(),
new Length([
'min' => 2,
'max' => 50,
'minMessage' => 'Your first name must be at least {{ limit }} characters long',
'maxMessage' => 'Your first name cannot be longer than {{ limit }} characters']
)],
])
->add('pk_lastname', TextType::class, [
'constraints' => [new NotBlank(),
new Length([
'min' => 2,
'max' => 50,
'minMessage' => 'Your first name must be at least {{ limit }} characters long',
'maxMessage' => 'Your first name cannot be longer than {{ limit }} characters']
)],
])
->add('pk_emailaddress', EmailType::class, [
'constraints' => [new NotBlank(), new Email(
[
'message' => 'The email "{{ value }}" is not a valid email.',
'mode' => 'strict',
]
)],
])
->add('pk_phonenumber', TelType::class, [
'constraints' => [],
])
->add('pk_message', TextareaType::class, [
'constraints' => [new NotBlank()],
])
->getForm();
Когда форма отправляется в веб-интерфейсе, я предотвращаю поведение по умолчанию с помощью JavaScript и создаю AJAXзапрос в файл PHP с отправленными данными, где форма Symfony используется для проверки правильности отправленных данных.
Затем я вручную отправляю форму, как показано ниже:
$request = Request::createFromGlobals();
$submitData = array("pk_firstname" => $request->request->get('pk_firstname'),
"pk_lastname" => $request->request->get('pk_lastname'),
"pk_emailaddress" => $request->request->get('pk_emailaddress'),
"pk_phonenumber" => $request->request->get('pk_phonenumber'),
"pk_message" => $request->request->get('pk_message'));
$form->submit($submitData);
Проблема заключается в том, что приотправлены неверные данные isValid()
метод $form
объект возвращает форма недействительна , но getErrors()
методы возвращают пустой массив.
Есть ли что-то, что я делаю здесь неправильно?
Я хотел бы получить поля, которые нарушают ограничения и которые позволяют передавать эти сообщения об ошибках в JavaScript для отображения в веб-интерфейсе.