簡體   English   中英

Symfony 3.4 - form_errors表單不顯示主題

[英]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;
}

有關更多信息: https//symfony.com/doc/current/validation.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM