Вот мое решение.Я решил создать массив с ошибками и передать его в представление (веточка).Мне потребовалось некоторое время, чтобы понять, как получать сообщения об ошибках ... но здесь мы идем:
// Controller example:
public function indexAction(Request $request)
{
$task = new \Michael\MikeBundle\Entity\Task();
$task->setTask('Write a blog post');
$task->setDueDate(new \DateTime('tomorrow'));
$form = $this->createFormBuilder($task)
->add('task', 'text',
array('attr' => array('title' => 'Enter Task')))
->add('dueDate', 'date', array(
'widget' => 'single_text',
'required' => false,
'attr' => array('title' => 'Insert due date')))
->getForm();
// If user submitted code
if ($request->getMethod() == 'POST') {
// Get form part from request
$request->request->get('form');
// Bind request into the form
$form->bindRequest($request);
}
// Pass into the view
return array('errors' => $this->_getErrors($form), 'form' => $form->createView());
}
protected function _getErrors($form)
{
// Validate form
$errors = $this->get('validator')->validate($form);
// Prepare collection
$collection = array();
// Loop through each element of the form
foreach ($form->getChildren() as $key => $child) {
$collection[$key] = "";
}
foreach ($errors as $error) {
$collection[str_replace("data.", "", $error->getPropertyPath())] = $error->getMessage();
}
return $collection;
}
Важной частью является метод _getErrors ($ form), так как он возвращает массив, подобный этому (если есть)ошибки)
$ errors ['task'] = Это значение не должно быть пустым
$ errors ['dueDate'] = ""
И вот часть ветки:
<table>
<tr>
<td>{{ form_label(form.dueDate) }}</td>
<td>{{ form_widget(form.dueDate) }}</td>
<td>{{ errors[form.dueDate.vars["name"]] }}</td>
</tr>
<tr>
<td>{{ form_label(form.task) }}</td>
<td>{{ form_widget(form.task) }}</td>
<td>{{ errors[form.task.vars["name"]] }}</td>
</tr>
</table>
Надеюсь, это достаточно ясно.Дайте мне знать, если вам нужна помощь.
Пожалуйста, напишите ответ, если есть более простой способ сделать это.