は、残りの要素をレンダリングするためにform_widget()
を呼び出し、その後、私は周りのカスタムCSSを追加するform_row()
で両方のフィールドをレンダリングしていますのは、私は2つのフィールドのみ(ユーザー名と電子メール)フォームにレンダリングされる要素が残っているかどうかを検出するにはどうすればよいですか?
との簡単なフォームをレンダリングするSymfony Form Componentを使用していましょう(別のオプションはform_rest()
) 私が探しているのは、余分なフィールドがある場合にカスタムhtmlを追加するために、form_widget()
がオブジェクトを印刷するかどうかを事前にチェックする方法です。 私はそれをやった方法は、このようなものです:
//app/form/index.html.twig
{# Other template code #}
...
{# Rendering form: #}
{{ form_start(form) }}
{{ form_row(form.username) }}
{{ form_row(form.email) }}
{% set form_rendered = form_widget(form) %}
{% if form_rendered %}
<h3>Other fields</h3>
{{ form_rendered | raw }}
{% endif %}
{{ form_end(form) }}
{# End form #}
...
{# Other template code #}
しかし、私はそれに満足していません。もっと良い方法はありますか?
編集:(デフォルトで有効)CSRFの保護を使用する場合は、フォームは、我々は印刷されませんでしたトークンのための余分な隠しフィールドを持っているので、前のコードは常に、<h3>Other fields</h3>
を印刷します。 {{ form_row(form._token) }}
でどこかにレンダリングする必要があります。