2014-09-22 3 views
0

Я не новичок в Symfony, и я сделал много форм в нем. Эта проблема возникла впервые, когда я попробовал встроенные формы. Не было ошибок, которые могут быть отображены в шаблоне, но метод $form->getErrorsAsString() говорит, что в форме есть ошибки.Symfony2 Нет ошибок в форме

После того, как встроенные формы не сработали, я попробовал самый простой пример.

$ustanovaEntity = new Author(); 
$form = $formFactory->createBuilder('form', new Author()) 
     ->add('title', 'text') 
     ->add('add', 'submit') 
     ->getForm(); 

Это - основная форма, и у нее нет никаких ошибок. $form->getErrors() возвращает пустой массив, но все же, $form->getErrorsAsString() показывает, что есть ошибка, если я оставлю заголовок пустым.

Кроме того, я проверил form_div_layout.html.twig в блоке ошибок, а переменная пруда пуста. Ошибок нет. Тем не менее, $form->getErrorsAsString() показывают, что ошибки действительно существуют.

Я попытался переустановить Symfony, я попробовал удалить каталог поставщика и справиться с тем же дистрибутивом проекта diffenet symfony, я попробовал даже простые примеры, я пробовал ... Ничего не работает.

Я серьезно начинаю думать, что что-то не так с моей головой.

Помогите?

EDIT

Я установил свежий Symfony издание и гнал все файлы из моего проекта в этой новой симфони Insall. Все еще не сработало.

Я также попробовал самый простой подход ...

{{ form(form, {'attr': {'novalidate': 'novalidate'}}) }} 

До сих пор не работает.

+0

Рассмотрим размещение шаблона. Используете ли вы form_errors и/или form_row? – Cerad

+0

Я попробовал оба. Ни один из них не работает. 5 минут назад я загрузил новую версию Symfony 2.4.9, и я попытаюсь имитировать эту форму в ней и теперь –

ответ

0

Если вы просто хотите, чтобы получить ошибки от всех дочерних форм, вы можете сделать:

$form->getErrors(true); 

Это будет проходить через корень и все дочерние формы и получить все ошибки. См FormInterface::getErrors method

Причина этого заключается в том, что ваши ошибки не в основной форме, они находятся на дочерних формах, чтобы получить ошибки ребенка формы, которую вы просто получить его от его родителей и получить его ошибку:

$form->get('title')->getErrors(); 

Если вы хотите, чтобы все ошибки из дочерних форм на самом деле быть в корневой форме, вам необходимо включить пропускание ошибок, например:

$form = $formFactory->createBuilder('form', new Author()) 
    ->add('title', 'text', ['error_bubbling' => true]) 
    ->add('add', 'submit') 
    ->getForm(); 

Как это, вы получите все ошибки от детей, позволивших ошибка пузыриться в корневой форме, как вы пытаетесь сделать из s терпкий:

$form->getErrors(); 

Имейте в виду, что курица с помощью барботирования ошибки, ошибки не будут доступны на реальной форме ребенка, где он появился, так что теперь это будет пустым:

$form->get('title')->getErrors(); 
Смежные вопросы