[英]Symfony 3.4 - form_errors form theme not displaying
編輯:做一些挖掘,看起來我的問題源於我正在創建的表單建立在FOSUserBundle的注冊表單之上。 為什么這是一個問題? 因為如果表單無效,他們的RegistrationController
會拋出REGISTRATION_FAILURE
事件,但看起來事件看起來不像是監聽器。 因此,除了系統根本不處理之外,無效狀態實際上沒有做任何事情。 它甚至沒有返回表單(有錯誤)。
我有一個相對簡單的表單主題我想使用,以便在我的表單頂部的塊中顯示我的表單錯誤:
{% form_theme form _self %}
{% block form_errors %}
{% spaceless %}
{% if errors|length > 0 %}
<div class="errors pt-2 mb-2">
<ul>
{% for error in errors %}
<li>{{ error.message }}</li>
{% endfor %}
</ul>
</div>
{% endif %}
{% endspaceless %}
{% endblock form_errors %}
我在表單模板中引用它:
{% form_theme form 'Form/errors.html.twig' %}
然后我嘗試用一個簡單的方法調用它:
{{ form_errors(form) }}
但是,當我故意向表單輸入提供不正確的數據並嘗試提交時,不會出現錯誤div。 由於存在6個驗證錯誤,因此提交失敗,但HTML源中未顯示錯誤。
看一下文檔 ,我認為我做得對,但我顯然錯過了一些東西。
您有兩個問題,您必須解決它們才能使表單驗證工作。
第一個問題:
第一個問題是聽眾沒有工作。 如果您故意在表單數據中出錯並且表單驗證沒有開始,那么您將永遠不會看到form_errors模板。 您必須查看FOSUserBundle的文檔。 首先,檢查您是否正確啟用/配置了validation.yml。 其次,檢查生成表單的PHP類。 確保正確設置驗證標准。 現在,檢查表單是否產生錯誤的最可靠方法是在Twig模板中{{dump(form)}}
。 它將顯示表單的所有數據,包括錯誤。 繼續努力,直到你看到一些錯誤。 否則你將無法完成下一步。
第二個問題:
第二個問題是您可能沒有包含正確的模板。 我無法計算我遇到同樣問題的次數。 您可能有3個或4個模板包含<form>
html / twig代碼,但Symfony實際上使用了1或2個。 將代碼添加到每個代碼中,並確保您的Twig塊不會被其他表單塊覆蓋。
也請記住,你必須清理兩個應用程序緩存( php bin/console cache:clean -e prod
)和瀏覽器緩存中的模板,每次更改后。 你可能已經做好了一切,並且該死的緩存顯示了緩存的結果。 最后一條建議 :使用瀏覽器開發人員工具。 通常,您會發現工具控制台中顯示了大量信息和錯誤。
形式的錯誤是什么? 要拋出錯誤,您必須在實體上設置斷言。 例如:
class User extend baseUser
{
/**
* @Assert\NotBlank
*/
public $name;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.