Lassen Sie sich sagen, dass ich die Symfony Form Component verwenden ein einfaches Formular mit nur zwei Feldern (Benutzername und E-Mail)Wie kann ich feststellen, ob in einem Formular Elemente noch gerendert werden können?
ich beiden Felder Rendering mit form_row()
hinzufügen benutzerdefinierter CSS um, dann rufe form_widget()
zu machen, den Rest der Elemente bin zu machen (Eine andere Option wäre form_rest()
) Was ich suche ist eine Möglichkeit, vorher zu prüfen, ob form_widget()
irgendwelche Objekte drucken wird oder nicht, um benutzerdefinierte HTML hinzuzufügen, falls es zusätzliche Felder gibt. So wie ich es tat, ist wie folgt:
//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 #}
aber ich bin nicht mit ihm zufrieden. Gibt es einen besseren Weg?
Edit: Wenn CSRF-Schutz (standardmäßig aktiviert), würde der vorherige Code IMMER <h3>Other fields</h3>
drucken, da das Formular ein zusätzliches verstecktes Feld für das Token hat, dass wir nicht gedruckt. Wir müssten es irgendwo mit {{ form_row(form._token) }}
rendern.