2014-09-22 69 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,並且errors twig變量爲空。沒有錯誤。儘管如此,$form->getErrorsAsString()顯示錯誤確實存在。

我試過重新安裝symfony,我試着刪除vendor目錄並且應付來自diffrenet symfony項目的相同目錄,我試過甚至簡單的例子,我試過......沒有任何作用。

我很認真地開始思考,什麼是錯把我的頭。

任何幫助?

編輯

我安裝了一個新的symfony的版本,並從我的項目到新的symfony英索爾推杆的所有文件。仍然沒有工作。

我也嘗試過的最簡單的方法...

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

仍然沒有工作。

+0

考慮發佈您的模板。你使用form_errors和/或form_row? – Cerad 2014-09-22 17:04:36

+0

我嘗試了兩個。它們都不起作用。 5分鐘前,我已經下載了symfony 2.4的全新安裝。9,我會嘗試模擬它的形式,現在就讓 – 2014-09-22 17:08:31

回答

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();