2014-01-08 21 views
3

我試圖顯示與樹枝中特定form_field相關的錯誤消息,但它不顯示任何內容。與在validation.yml我formType字段{{form_errors(form.fieldName)}}在symfony2.3中不起作用

-\-\Entity\Customer: 
    properties: 
     address2: 
      - NotBlank: 
       message: 'Testing required' 

我已經定義的錯誤,當我打印:

//Controller Class 
$validator = $this->get('validator'); 
$errors = $validator->validate($customer); 

//Controller 
return $this->render('MyBundle:RegistrationPages:register.html.twig', 
    array (
     'errors' => $errors, 
     'form'=>$form 
    ) 
); 

它顯示錯誤消息:

//Twig 
{% if errors is defined %} 
    <h1>The Form has following errors</h1> 
    {% for error in errors %} 
     {{ error.message }} 
    {% endfor %} 
{% endif %} 

輸出:

測試所需

但:

{{ form_errors(form.address2) }} 

沒有顯示任何東西。

+0

你的意思是'{{form_errors(form.address2)}}'沒有顯示任何東西? – Mick

+0

Yes..It顯示什麼:( –

+0

return $this->render('MyBundle:RegistrationPages:register.html.twig', array ('errors' => $errors)); {% if errors is defined %}

The Form has following errors

{% for error in errors %} {{ error.message }} {% endfor %} {% endif %} 輸出作爲測試所需要的,但{{ form_errors(form.fieldName) }}顯示什麼 –

回答

3

正如你可以在你的驗證文件中看到,該NotBlank約束是對你的address2屬性定義:

properties: 
    address2: 
     - NotBlank: 
      message: 'Testing required' 

該表單字段中的所有錯誤,因此將可在這一領域:

{{ form_errors(form.address2) }} 

注意:您不必將這樣的錯誤傳遞給您的模板:

//Get all errors that are attributed to the entity itself 
{{ form_errors(form) }} 
//Get all errors for the individual field `address2 ` 
{{ form_errors(form.address2) }} 
+1

但是它不顯示任何錯誤消息{{form_errors(form.address2)}} :( –

+0

所以,你真的有一個叫做fieldName的字段嗎?你可以把'Testing required'改爲'address2 required'並且看到 – Mick

+0

不,我的字段名稱爲address2,{{form_errors(form.address2)}}不顯示反義詞... –

2

簡而言之:如果你只是驗證的對象,而不是形式,你會不會在你的表單錯誤。

如果你做$errors = $validator->validate($customer);你驗證$customer不是形式。所以錯誤不會附加到表單上,它們只會返回,您必須按照您在問題中所做的方式將它們發送到模板。

如果你想驗證表單,並能夠訪問錯誤形式對象,請使用$form->isValid();(我不能告訴你更多,因爲我沒有你的表單代碼。)

http://symfony.com/doc/current/book/validation.html#validation-and-forms

+0

+1這是正確的! – Mick

+0

@Guillaume Royer我在窗體中調用$ form-> isValid(),但我無法獲取與該字段有關的錯誤。 –

+0

@AliHassan所以請提供您的代碼''form-> isValid();'所以我們可以回答這個問題。隨着你發佈的代碼,如果它不起作用,這是正常的。 – Guilro

0

您必須在$ form-> handleRequest($ request)之後呈現視圖。這意味着你應該寫你這樣的代碼:

$form->handleRequest($request); 
$form_view = $form->createView(); 

.... ....

return $this->render('MyBundle:RegistrationPages:register.html.twig', 
    array (
     'errors' => $errors, 
     'form'=>$form_view 
    ) 
);