Проверка программной формы Symfony

0

В Symfony 2.5.10 у меня есть несколько типов форм, каждый со своими собственными группами проверки, вызывающий различные ограничения класса. Каждый тип представляет собой конкретный шаг в рабочем процессе. Последний шаг выполняет итерацию по всем другим этапам, выполняет необходимую проверку и отображает любые возможные нарушения для пользователя.

Данные за каждым типом формы (data_class) всегда одинаковы: объект doctrine.

Каждое отображаемое нарушение ссылается на URL/путь, представляющий рассматриваемый шаг, с дополнительным параметром, который при наличии должен запускать проверку. Идея состоит в том, что форма должна отображать ошибки немедленно, без отправки. Другими словами, я хочу запрограммировать отправку формы программно (серверная, а не JS!).

Я пробовал разные способы:

  1. Поместите объект (который у меня есть) в запрос и установите метод последнего POST, чтобы форма :: handleRequest обрабатывала все автоматически. Проблема: преобразование объекта объекта в массив, который будет возвращен из представления реальной формы. Может быть, DataTransformer? PropertyAccessor?
  2. Как 1. но назовите форму :: submit. См. Http://symfony.com/doc/2.5/cookbook/form/direct_submit.html#calling-form-submit-manually
  3. Подтвердите себя (точно так же, как я делаю на последнем шаге), давая мне ConstraintViolationList. Перейдите по списку и вызовите Form :: addError для каждого нарушения. Проблема: мне нужно добавить ошибки к правильным дочерним элементам, а не только к родительскому. Может быть, я мог бы сделать это, используя propertyPath каждой ошибки, но как перейти от этой к дочерней форме?

Любая помощь приветствуется. Я тратил stackoverflow и сеть в целом, но безрезультатно.

Теги:
forms

1 ответ

0

Первый способ выглядит хорошо. Вы просто должны проверить форму ajax, и они просто используют что-то вроде

$entity = $form->getData()

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

Затем просто передайте этот объект в представление twig, чтобы сформировать ответ запроса. Наряду с сущностью вы можете захотеть предоставить ошибки формы, полученные из $form->createView() FormView.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню