Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit a29f9fb

Browse filesBrowse files
committed
Don't use form() helper
1 parent 4ef1ef3 commit a29f9fb
Copy full SHA for a29f9fb

File tree

Expand file treeCollapse file tree

1 file changed

+30
-28
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+30
-28
lines changed

‎book/forms.rst

Copy file name to clipboardExpand all lines: book/forms.rst
+30-28Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -144,14 +144,16 @@ helper functions:
144144
.. code-block:: html+jinja
145145

146146
{# app/Resources/views/Default/new.html.twig #}
147-
148-
{{ form(form) }}
147+
{{ form_start(form) }}
148+
{{ form_widget(form) }}
149+
{{ form_end(form) }}
149150

150151
.. code-block:: html+php
151152

152153
<!-- app/Resources/views/Default/new.html.php -->
153-
154-
<?php echo $view['form']->form($form) ?>
154+
<?php echo $view['form']->start($form) ?>
155+
<?php echo $view['form']->widget($form) ?>
156+
<?php echo $view['form']->end($form) ?>
155157

156158
.. image:: /images/book/form-simple.png
157159
:align: center
@@ -162,12 +164,24 @@ helper functions:
162164
the same URL that it was displayed in. You will learn later how to
163165
change the request method and the target URL of the form.
164166

165-
That's it! By printing ``form(form)``, each field in the form is rendered, along
166-
with a label and error message (if there is one). The ``form`` function also
167-
surrounds everything in the necessary HTML ``<form>`` tag. As easy as this is,
168-
it's not very flexible (yet). Usually, you'll want to render each form field
169-
individually so you can control how the form looks. You'll learn how to do
170-
that in the ":ref:`form-rendering-template`" section.
167+
That's it! Just three lines are needed to render the complete form:
168+
169+
* ``form_start(form)`` - Renders the start tag of the form, including the
170+
correct enctype attributes when using file uploads;
171+
172+
* ``form_widget(form)`` - Renders all fields, along with a label and error
173+
message (if there is one) input element;
174+
175+
* ``form_end()`` - Renders the end tag of the form and any fields that have not
176+
yet been rendered, in case you rendered each field yourself. This is useful
177+
for rendering hidden fields and taking advantage of the automatic
178+
:ref:`CSRF Protection <forms-csrf>`.
179+
180+
.. seealso::
181+
182+
As easy as this is, it's not very flexible (yet). Usually, you'll want to
183+
render each form field individually so you can control how the form looks.
184+
You'll learn how to do that in the ":ref:`form-rendering-template`" section.
171185

172186
Before moving on, notice how the rendered ``task`` input field has the value
173187
of the ``task`` property from the ``$task`` object (i.e. "Write a blog post").
@@ -753,25 +767,20 @@ of code. Of course, you'll usually need much more flexibility when rendering:
753767
<?php echo $view['form']->row($form['dueDate']) ?>
754768
<?php echo $view['form']->end($form) ?>
755769

756-
Take a look at each part:
757-
758-
* ``form_start(form)`` - Renders the start tag of the form.
770+
You already know the ``form_start()`` and ``form_end()`` functions, but what do
771+
the other functions do?
759772

760773
* ``form_errors(form)`` - Renders any errors global to the whole form
761774
(field-specific errors are displayed next to each field);
762775

763776
* ``form_row(form.dueDate)`` - Renders the label, any errors, and the HTML
764777
form widget for the given field (e.g. ``dueDate``) inside, by default, a
765-
``div`` element;
766-
767-
* ``form_end()`` - Renders the end tag of the form and any fields that have not
768-
yet been rendered. This is useful for rendering hidden fields and taking
769-
advantage of the automatic :ref:`CSRF Protection <forms-csrf>`.
778+
``div`` element.
770779

771780
The majority of the work is done by the ``form_row`` helper, which renders
772-
the label, errors and HTML form widget of each field inside a ``div`` tag
773-
by default. In the :ref:`form-theming` section, you'll learn how the ``form_row``
774-
output can be customized on many different levels.
781+
the label and HTML form widget of each field inside a ``div`` tag by default.
782+
In the :ref:`form-theming` section, you'll learn how the ``form_row`` output
783+
can be customized on many different levels.
775784

776785
.. tip::
777786

@@ -958,18 +967,11 @@ to the ``form()`` or the ``form_start()`` helper:
958967
.. code-block:: html+jinja
959968

960969
{# app/Resources/views/Default/new.html.twig #}
961-
{{ form(form, {'action': path('target_route'), 'method': 'GET'}) }}
962-
963970
{{ form_start(form, {'action': path('target_route'), 'method': 'GET'}) }}
964971

965972
.. code-block:: html+php
966973

967974
<!-- app/Resources/views/Default/newAction.html.php -->
968-
<?php echo $view['form']->form($form, array(
969-
'action' => $view['router']->generate('target_route'),
970-
'method' => 'GET',
971-
)) ?>
972-
973975
<?php echo $view['form']->start($form, array(
974976
'action' => $view['router']->generate('target_route'),
975977
'method' => 'GET',

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.