-
-
Notifications
You must be signed in to change notification settings - Fork 5.2k
[Form] Make difference between data and empty_data options more visisble #7802
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 8 commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
87b3542
explicit differences between 'data' & 'empty_data' in FormType
HeahDude 67c93b6
fix typo
HeahDude 242941a
improved accuracy
HeahDude 4fd2d96
Addressed @stof's comment
HeahDude 5f3813d
Updated the example add added a caution
HeahDude 188f0ab
Tried to write the important points more explicitly
wouterj d552ea3
Readd mixed type for empty_data, it can be string, array or object
wouterj f375489
Better explain empty_data values
wouterj df9b878
Fixed a minor typo
javiereguiluz 64e3984
Fixed a minor typo
javiereguiluz File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,21 @@ | ||
data | ||
~~~~ | ||
|
||
**type**: ``mixed`` **default**: Defaults to field of the underlying object (if there is one) | ||
**type**: ``mixed`` **default**: Defaults to field of the underlying structure. | ||
|
||
When you create a form, each field initially displays the value of the | ||
corresponding property of the form's domain object (if an object is bound | ||
to the form). If you want to override the initial value for the form or | ||
just an individual field, you can set it in the data option:: | ||
corresponding property of the form's domain data (e.g. if you bind an object to | ||
the form). If you want to override this initial value for the form or | ||
an individual field, you can set it in the data option:: | ||
|
||
|
||
$builder->add('token', 'hidden', array( | ||
'data' => 'abcdef', | ||
)); | ||
|
||
.. note:: | ||
.. caution:: | ||
|
||
The default values for form fields are taken directly from the underlying | ||
data structure (e.g. an entity or an array). The ``data`` option overrides | ||
this default value. | ||
The ``data`` option *always* overrides the value taken from the domain data | ||
(object) when rendering. This means the object value is also overriden when | ||
the form edits an already persisted object, causing it to loose it's | ||
persisted value when the form is submitted. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,24 +9,35 @@ empty_data | |
|
||
DEFAULT_PLACEHOLDER | ||
|
||
This option determines what value the field will return when the submitted | ||
value is empty. | ||
|
||
But you can customize this to your needs. For example, if you want the | ||
``gender`` choice field to be explicitly set to ``null`` when no value is | ||
selected, you can do it like this:: | ||
|
||
$builder->add('gender', 'choice', array( | ||
'choices' => array( | ||
'm' => 'Male', | ||
'f' => 'Female' | ||
), | ||
'required' => false, | ||
'placeholder' => 'Choose your gender', | ||
'empty_data' => null | ||
This option determines what value the field will *return* when the submitted | ||
value is empty (or missing). It does not set an initial value if none is | ||
provided when the form is rendered in a view. | ||
|
||
This means it helps you handling form submission with blank fields. For | ||
example, if you want the ``name`` field to be explicitly set to ``John Doe`` | ||
when no value is selected, you can do it like this:: | ||
|
||
$builder->add('name', null, array( | ||
'required' => false, | ||
'empty_data' => 'John Doe', | ||
)); | ||
|
||
This will still render an empty text box, but upon submission the ``John Doe`` | ||
value will be set. Use the ``data`` or ``placeholder`` options to show this | ||
initial value in the rendered form. | ||
|
||
If a form is compound, you can set ``empty_data`` as an array, object or | ||
closure. See the :doc:`/form/use_empty_data` article for more details about | ||
these options. | ||
|
||
.. note:: | ||
|
||
If you want to set the ``empty_data`` option for your entire form class, | ||
see the :doc:`/form/use_empty_data` article. | ||
|
||
.. caution:: | ||
|
||
:doc:`Form data transformers </form/data_transformers>` will still be | ||
applied to the ``empty_data`` value. This means that an empty string will | ||
be casted to ``null``. Use a custom data transformer if you explicitly want | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. cast |
||
to return the empty string. |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[...] to lose its persisted [...]