From f73133dd2c8b6dbb47ba518003aeddd526e3ed50 Mon Sep 17 00:00:00 2001 From: Javier Eguiluz Date: Thu, 8 Oct 2015 12:06:06 +0200 Subject: [PATCH 01/34] Removed "http_basic" config from the login form cookbook --- cookbook/security/form_login_setup.rst | 3 --- 1 file changed, 3 deletions(-) diff --git a/cookbook/security/form_login_setup.rst b/cookbook/security/form_login_setup.rst index ea3981c7760..3b58d5e3240 100644 --- a/cookbook/security/form_login_setup.rst +++ b/cookbook/security/form_login_setup.rst @@ -29,7 +29,6 @@ First, enable form login under your firewall: firewalls: default: anonymous: ~ - http_basic: ~ form_login: login_path: /login check_path: /login_check @@ -47,7 +46,6 @@ First, enable form login under your firewall: - @@ -60,7 +58,6 @@ First, enable form login under your firewall: 'firewalls' => array( 'default' => array( 'anonymous' => null, - 'http_basic' => null, 'form_login' => array( 'login_path' => '/login', 'check_path' => '/login_check', From 6c5e72664669b1f4ee7dd8be320d7b4d10698af8 Mon Sep 17 00:00:00 2001 From: Oskar Stark Date: Fri, 30 Oct 2015 12:02:28 +0100 Subject: [PATCH 02/34] updated sentence --- cookbook/configuration/override_dir_structure.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cookbook/configuration/override_dir_structure.rst b/cookbook/configuration/override_dir_structure.rst index 7ab35d98733..813a4e30965 100644 --- a/cookbook/configuration/override_dir_structure.rst +++ b/cookbook/configuration/override_dir_structure.rst @@ -176,8 +176,7 @@ The change in the ``composer.json`` will look like this: ... } -In ``app/autoload.php``, you need to modify the path leading to the -``vendor/autoload.php`` file:: +In ``app/autoload.php``, you need to modify the path to the ``autoload.php`` file:: // app/autoload.php // ... From 4dd3b8ad27f8c622af6b5a3d61edfd9607439478 Mon Sep 17 00:00:00 2001 From: WouterJ Date: Tue, 3 Nov 2015 17:25:35 +0100 Subject: [PATCH 03/34] Fixes done automatically by the docbot --- create_framework/dependency-injection.rst | 2 +- create_framework/event-dispatcher.rst | 2 +- create_framework/front-controller.rst | 2 +- create_framework/http-foundation.rst | 2 +- create_framework/http-kernel-httpkernel-class.rst | 2 +- create_framework/routing.rst | 2 +- create_framework/separation-of-concerns.rst | 2 +- create_framework/templating.rst | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/create_framework/dependency-injection.rst b/create_framework/dependency-injection.rst index 86e6b6d78cf..39eaae4702e 100644 --- a/create_framework/dependency-injection.rst +++ b/create_framework/dependency-injection.rst @@ -132,7 +132,7 @@ them. Objects will be created on-demand when you access them from the container or when the container needs them to create other objects. For instance, to create the router listener, we tell Symfony that its class -name is ``Symfony\Component\HttpKernel\EventListener\RouterListener``, and +name is ``Symfony\Component\HttpKernel\EventListener\RouterListener`` and that its constructor takes a matcher object (``new Reference('matcher')``). As you can see, each object is referenced by a name, a string that uniquely identifies each object. The name allows us to get an object and to reference diff --git a/create_framework/event-dispatcher.rst b/create_framework/event-dispatcher.rst index ac9a465fd8e..d2b062e415b 100644 --- a/create_framework/event-dispatcher.rst +++ b/create_framework/event-dispatcher.rst @@ -154,7 +154,7 @@ event (``response``); the event name must be the same as the one used in the ``dispatch()`` call. In the listener, we add the Google Analytics code only if the response is not -a redirection, if the requested format is HTML, and if the response content +a redirection, if the requested format is HTML and if the response content type is HTML (these conditions demonstrate the ease of manipulating the Request and Response data from your code). diff --git a/create_framework/front-controller.rst b/create_framework/front-controller.rst index dcff8303f37..0e140393dfa 100644 --- a/create_framework/front-controller.rst +++ b/create_framework/front-controller.rst @@ -57,7 +57,7 @@ And for the "Goodbye" page:: We have indeed moved most of the shared code into a central place, but it does not feel like a good abstraction, does it? We still have the ``send()`` method -for all pages, our pages do not look like templates, and we are still not able +for all pages, our pages do not look like templates and we are still not able to test this code properly. Moreover, adding a new page means that we need to create a new PHP script, diff --git a/create_framework/http-foundation.rst b/create_framework/http-foundation.rst index 261821879b1..fcaa6c005b2 100644 --- a/create_framework/http-foundation.rst +++ b/create_framework/http-foundation.rst @@ -299,7 +299,7 @@ the wheel. I've almost forgot to talk about one added benefit: using the HttpFoundation component is the start of better interoperability between all frameworks and applications using it (like `Symfony`_, `Drupal 8`_, `phpBB 4`_, `ezPublish -5`_, `Laravel`_, `Silex`_, and `more`_). +5`_, `Laravel`_, `Silex`_ and `more`_). .. _`Twig`: http://twig.sensiolabs.org/ .. _`HTTP specification`: http://tools.ietf.org/wg/httpbis/ diff --git a/create_framework/http-kernel-httpkernel-class.rst b/create_framework/http-kernel-httpkernel-class.rst index eb3b8cf7741..ab0663dcbce 100644 --- a/create_framework/http-kernel-httpkernel-class.rst +++ b/create_framework/http-kernel-httpkernel-class.rst @@ -11,7 +11,7 @@ There should be an easier way, right? Enter the ``HttpKernel`` class. Instead of solving the same problem over and over again and instead of reinventing the wheel each time, the ``HttpKernel`` -class is a generic, extensible, and flexible implementation of +class is a generic, extensible and flexible implementation of ``HttpKernelInterface``. This class is very similar to the framework class we have written so far: it diff --git a/create_framework/routing.rst b/create_framework/routing.rst index 7d84622e4c0..01350294212 100644 --- a/create_framework/routing.rst +++ b/create_framework/routing.rst @@ -82,7 +82,7 @@ of default values for route attributes (``array('name' => 'World')``). :doc:`Routing component documentation ` to learn more about its many features like URL generation, attribute requirements, HTTP method enforcements, loaders for YAML or XML files, - dumpers to PHP or Apache rewrite rules for enhanced performance, and much + dumpers to PHP or Apache rewrite rules for enhanced performance and much more. Based on the information stored in the ``RouteCollection`` instance, a diff --git a/create_framework/separation-of-concerns.rst b/create_framework/separation-of-concerns.rst index d7bb049970c..8eba278c6da 100644 --- a/create_framework/separation-of-concerns.rst +++ b/create_framework/separation-of-concerns.rst @@ -8,7 +8,7 @@ class. It would bring us better *reusability* and easier testing to name just a few benefits. If you have a closer look at the code, ``front.php`` has one input, the -Request, and one output, the Response. Our framework class will follow this +Request and one output, the Response. Our framework class will follow this simple principle: the logic is about creating the Response associated with a Request. diff --git a/create_framework/templating.rst b/create_framework/templating.rst index a6d55350f78..5fa4b4bc468 100644 --- a/create_framework/templating.rst +++ b/create_framework/templating.rst @@ -50,7 +50,7 @@ rendered:: As ``render_template`` is used as an argument to the PHP ``call_user_func()`` function, we can replace it with any valid PHP `callbacks`_. This allows us to -use a function, an anonymous function, or a method of a class as a +use a function, an anonymous function or a method of a class as a controller... your choice. As a convention, for each route, the associated controller is configured via From ef3a7defc85aa6263f935219d216d09e7ff48df7 Mon Sep 17 00:00:00 2001 From: Hidde Wieringa Date: Tue, 3 Nov 2015 17:02:49 +0100 Subject: [PATCH 04/34] Updated Table Console helper for spanning cols and rows Fixed typo Added versionadded --- components/console/helpers/table.rst | 91 ++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/components/console/helpers/table.rst b/components/console/helpers/table.rst index b4f21eb964c..00a3f953c8e 100644 --- a/components/console/helpers/table.rst +++ b/components/console/helpers/table.rst @@ -143,3 +143,94 @@ Here is a full list of things you can customize: $table->setStyle('colorful'); This method can also be used to override a built-in style. + +Spanning multiple columns and rows +---------------------------------- + +.. versionadded:: 2.7 + Spanning multiple columns and rows was introduced in Symfony 2.7. + +To make a table cell which spans multiple columns you can use a :class:`Symfony\\Component\\Console\\Helper\\TableCell`:: + + use Symfony\Component\Console\Helper\Table; + use Symfony\Component\Console\Helper\TableSeparator; + use Symfony\Component\Console\Helper\TableCell; + + $table = new Table($output); + $table + ->setHeaders(array('ISBN', 'Title', 'Author')) + ->setRows(array( + array('99921-58-10-7', 'Divine Comedy', 'Dante Alighieri'), + new TableSeparator(), + array(new TableCell('This value spans 3 columns.', array('colspan' => 3))), + )) + ; + $table->render(); + +which results in: + +.. code-block:: text + + +---------------+---------------+-----------------+ + | ISBN | Title | Author | + +---------------+---------------+-----------------+ + | 99921-58-10-7 | Divine Comedy | Dante Alighieri | + +---------------+---------------+-----------------+ + | This value spans 3 columns. | + +---------------+---------------+-----------------+ + +.. tip:: + + You can create a multiple-line page title using a header cell that spans + the enire table width:: + + $table->setHeaders(array( + array(new TableCell('Main table title', array('colspan' => 3))), + array('ISBN', 'Title', 'Author'), + )) + // ... + + This generates: + + .. code-block:: text + + +-------+-------+--------+ + | Main table title | + +-------+-------+--------+ + | ISBN | Title | Author | + +-------+-------+--------+ + | ... | + +-------+-------+--------+ + +In a similar way you can span multiple rows:: + + use Symfony\Component\Console\Helper\Table; + use Symfony\Component\Console\Helper\TableCell; + + $table = new Table($output); + $table + ->setHeaders(array('ISBN', 'Title', 'Author')) + ->setRows(array( + array( + new TableCell("This ISBN is spanning\nmultiple rows", array('rowspan' => 2)), + 'A Tale of Two Cities', + 'Charles Dickens', + ), + array('Divine Comedy', 'Dante Alighieri'), + )) + ; + $table->render(); + +which results in: + +.. code-block:: text + + +-----------------------+----------------------+-----------------+ + | ISBN | Title | Author | + +-----------------------+----------------------+-----------------+ + | This ISBN is spanning | A Tale of Two Cities | Charles Dickens | + | multiple rows | Divine Comedy | Dante Alighieri | + +-----------------------+----------------------+-----------------+ + +You can use the ``colspan`` and ``rowspan`` options at the same time which allows +you to create any table layout you may wish. From 7ea64416593d13f9b8656bf1513fade89e83533e Mon Sep 17 00:00:00 2001 From: Hidde Wieringa Date: Thu, 5 Nov 2015 23:59:16 +0100 Subject: [PATCH 05/34] Updated rowspan example to be more logical to humans --- components/console/helpers/table.rst | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/components/console/helpers/table.rst b/components/console/helpers/table.rst index 00a3f953c8e..c43838ca101 100644 --- a/components/console/helpers/table.rst +++ b/components/console/helpers/table.rst @@ -212,11 +212,11 @@ In a similar way you can span multiple rows:: ->setHeaders(array('ISBN', 'Title', 'Author')) ->setRows(array( array( - new TableCell("This ISBN is spanning\nmultiple rows", array('rowspan' => 2)), - 'A Tale of Two Cities', - 'Charles Dickens', + '978-0521567817', + 'De Monarchia', + new TableCell("Dante Alighieri\nspans multiple rows", array('rowspan' => 2)), ), - array('Divine Comedy', 'Dante Alighieri'), + array('978-0804169127', 'Divine Comedy'), )) ; $table->render(); @@ -225,12 +225,12 @@ which results in: .. code-block:: text - +-----------------------+----------------------+-----------------+ - | ISBN | Title | Author | - +-----------------------+----------------------+-----------------+ - | This ISBN is spanning | A Tale of Two Cities | Charles Dickens | - | multiple rows | Divine Comedy | Dante Alighieri | - +-----------------------+----------------------+-----------------+ + +----------------+---------------+---------------------+ + | ISBN | Title | Author | + +----------------+---------------+---------------------+ + | 978-0521567817 | De Monarchia | Dante Alighieri | + | 978-0804169127 | Divine Comedy | spans multiple rows | + +----------------+---------------+---------------------+ You can use the ``colspan`` and ``rowspan`` options at the same time which allows you to create any table layout you may wish. From 9d56e24c9629324ff8b302741f759181e7674e22 Mon Sep 17 00:00:00 2001 From: Ryan Weaver Date: Sun, 8 Nov 2015 18:52:41 -0500 Subject: [PATCH 06/34] minor lang tweak --- cookbook/configuration/override_dir_structure.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cookbook/configuration/override_dir_structure.rst b/cookbook/configuration/override_dir_structure.rst index 813a4e30965..a6048bb2072 100644 --- a/cookbook/configuration/override_dir_structure.rst +++ b/cookbook/configuration/override_dir_structure.rst @@ -176,7 +176,7 @@ The change in the ``composer.json`` will look like this: ... } -In ``app/autoload.php``, you need to modify the path to the ``autoload.php`` file:: +Then, update the path to the ``autoload.php`` file in ``app/autoload.php``:: // app/autoload.php // ... From 6b9ade36838b51ed9bee78b48f2078efa050c899 Mon Sep 17 00:00:00 2001 From: Ryan Weaver Date: Sun, 8 Nov 2015 18:57:14 -0500 Subject: [PATCH 07/34] minor tweaks --- components/console/helpers/table.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/console/helpers/table.rst b/components/console/helpers/table.rst index c43838ca101..2c37d379a8e 100644 --- a/components/console/helpers/table.rst +++ b/components/console/helpers/table.rst @@ -144,13 +144,13 @@ Here is a full list of things you can customize: This method can also be used to override a built-in style. -Spanning multiple columns and rows +Spanning Multiple Columns and Rows ---------------------------------- .. versionadded:: 2.7 Spanning multiple columns and rows was introduced in Symfony 2.7. -To make a table cell which spans multiple columns you can use a :class:`Symfony\\Component\\Console\\Helper\\TableCell`:: +To make a table cell that spans multiple columns you can use a :class:`Symfony\\Component\\Console\\Helper\\TableCell`:: use Symfony\Component\Console\Helper\Table; use Symfony\Component\Console\Helper\TableSeparator; @@ -167,7 +167,7 @@ To make a table cell which spans multiple columns you can use a :class:`Symfony\ ; $table->render(); -which results in: +This results in: .. code-block:: text @@ -221,7 +221,7 @@ In a similar way you can span multiple rows:: ; $table->render(); -which results in: +This outputs: .. code-block:: text From fd35e2137120af5829a50f63a5a1a1c8d24618ca Mon Sep 17 00:00:00 2001 From: Ilya Antipenko Date: Mon, 5 Oct 2015 13:48:23 +0300 Subject: [PATCH 08/34] Fix docs related with choice form type refactor Changes related with http://symfony.com/blog/new-in-symfony-2-7-choice-form-type-refactorization --- reference/forms/types/entity.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/reference/forms/types/entity.rst b/reference/forms/types/entity.rst index 5aabfdd5f23..e6c26a35c37 100644 --- a/reference/forms/types/entity.rst +++ b/reference/forms/types/entity.rst @@ -110,11 +110,12 @@ choice_label The ``choice_label`` option was introduced in Symfony 2.7. Prior to Symfony 2.7, it was called ``property`` (which has the same functionality). -**type**: ``string`` +**type**: ``string`` or a Closure This is the property that should be used for displaying the entities as text in the HTML element. If left blank, the entity object will be -cast into a string and so must have a ``__toString()`` method. +cast into a string and so must have a ``__toString()`` method. If using Closure, it should +take a single argument, which is the entity and return the label of this entity. .. note:: @@ -152,7 +153,7 @@ instead of the default entity manager. group_by ~~~~~~~~ -**type**: ``string`` +**type**: ``string`` or a Closure This is a property path (e.g. ``author.name``) used to organize the available choices in groups. It only works when rendered as a select tag From 3763f7189ca0415ec8052baa106b957df4d6df61 Mon Sep 17 00:00:00 2001 From: Matthias Althaus Date: Thu, 29 Oct 2015 11:00:17 +0100 Subject: [PATCH 09/34] Added basic choice type changes --- reference/forms/types/choice.rst | 68 +++++++++++++++---- .../forms/types/options/choice_attr.rst.inc | 24 +++++++ .../forms/types/options/choice_label.rst.inc | 39 +++++++++++ .../forms/types/options/choice_name.rst.inc | 18 +++++ .../forms/types/options/choice_value.rst.inc | 13 ++++ .../forms/types/options/group_by.rst.inc | 29 ++++++++ .../types/options/preferred_choices.rst.inc | 46 +++++++++++-- 7 files changed, 218 insertions(+), 19 deletions(-) create mode 100644 reference/forms/types/options/choice_attr.rst.inc create mode 100644 reference/forms/types/options/choice_label.rst.inc create mode 100644 reference/forms/types/options/choice_name.rst.inc create mode 100644 reference/forms/types/options/choice_value.rst.inc create mode 100644 reference/forms/types/options/group_by.rst.inc diff --git a/reference/forms/types/choice.rst b/reference/forms/types/choice.rst index 07f80d3cf3c..a6ea5bb205c 100644 --- a/reference/forms/types/choice.rst +++ b/reference/forms/types/choice.rst @@ -15,10 +15,17 @@ option. +-------------+------------------------------------------------------------------------------+ | Options | - `choices`_ | | | - `choice_list`_ | +| | - `choice_loader`_ | +| | - `choice_label`_ | +| | - `choice_name`_ | +| | - `choice_value`_ | +| | - `choice_attr`_ | +| | - `choices_as_values`_ | | | - `placeholder`_ | | | - `expanded`_ | | | - `multiple`_ | | | - `preferred_choices`_ | +| | - `group_by`_ | +-------------+------------------------------------------------------------------------------+ | Overridden | - `compound`_ | | options | - `empty_data`_ | @@ -51,7 +58,8 @@ user sees on the form (e.g. ``Male``). .. code-block:: php $builder->add('gender', 'choice', array( - 'choices' => array('m' => 'Male', 'f' => 'Female'), + 'choices' => array('Male' => 'm', 'Female' => 'f'), + 'choices_as_values' => true, 'required' => false, )); @@ -61,15 +69,33 @@ of checkboxes depending on the ``expanded`` option:: $builder->add('availability', 'choice', array( 'choices' => array( - 'morning' => 'Morning', - 'afternoon' => 'Afternoon', - 'evening' => 'Evening', + 'Morning' => 'morning', + 'Afternoon' => 'afternoon', + 'Evening' => 'evening', ), + 'choices_as_values' => true, 'multiple' => true, )); -You can also use the ``choice_list`` option, which takes an object that -can specify the choices for your widget. +If you rely on your option value attribute (e.g. for JavaScript) you need to +set ``choice_value``, otherwise the option values will be mapped to integer +values:: + + $builder->add('availability', 'choice', array( + 'choices' => array( + 'Morning' => 'morning', + 'Afternoon' => 'afternoon', + 'Evening' => 'evening', + ), + 'choices_as_values' => true, + 'choice_value' => function ($choice) { + return $choice; + }, + 'multiple' => true, + )); + +You can also use the ``choice_loader`` option, which can be used to load the +list only partially in cases where a fully-loaded list is not necessary. .. _forms-reference-choice-tags: @@ -85,19 +111,23 @@ choices This is the most basic way to specify the choices that should be used by this field. The ``choices`` option is an array, where the array key -is the item value and the array value is the item's label:: +is the item's label and the array value is the item's value:: $builder->add('gender', 'choice', array( - 'choices' => array('m' => 'Male', 'f' => 'Female'), + 'choices' => array('Male' => 'm', 'Female' => 'f'), + 'choices_as_values' => true, )); -.. tip:: +.. versionadded:: 2.7 + Symfony 2.7 introduced the option to flip the ``choices`` array to be + able to use values that are not integers or strings (but e.g. floats + or booleans). - When the values to choose from are not integers or strings (but e.g. - floats or booleans), you should use the `choice_list`_ option instead. - With this option you are able to keep the original data format which - is important to ensure that the user input is validated properly and - useless database updates caused by a data type mismatch are avoided. +.. caution:: + + The ``choices_as_values`` option will be removed in Symfony 3.0, where + the choices will be passed in the values of the ``choices`` option by + default. choice_list ~~~~~~~~~~~ @@ -149,6 +179,16 @@ in HTML), ``0.1`` will be returned. .. include:: /reference/forms/types/options/preferred_choices.rst.inc +.. include:: /reference/forms/types/options/choice_label.rst.inc + +.. include:: /reference/forms/types/options/choice_name.rst.inc + +.. include:: /reference/forms/types/options/choice_value.rst.inc + +.. include:: /reference/forms/types/options/choice_attr.rst.inc + +.. include:: /reference/forms/types/options/group_by.rst.inc + Overridden Options ------------------ diff --git a/reference/forms/types/options/choice_attr.rst.inc b/reference/forms/types/options/choice_attr.rst.inc new file mode 100644 index 00000000000..a5f929ee72b --- /dev/null +++ b/reference/forms/types/options/choice_attr.rst.inc @@ -0,0 +1,24 @@ +choice_attr +~~~~~~~~~~~ + +.. versionadded:: 2.7 + The ``choice_attr`` option was introduced in Symfony 2.7. + +**type**: ``array``, ``callable`` or ``string`` **default**: ``array()`` + +Returns the additional HTML attributes for choices. Can be an array, a callable +(like for ``choice_label``) or a property path. + +If an array, the keys of the ``choices`` array must be used as keys:: + + $builder->add('attending', 'choice', array( + 'choices' => array( + 'Yes' => true, + 'No' => false, + 'Maybe' => null, + ), + 'choices_as_values' => true, + 'choice_attr' => array( + 'Maybe' => array('class' => 'greyed-out'), + ), + )); diff --git a/reference/forms/types/options/choice_label.rst.inc b/reference/forms/types/options/choice_label.rst.inc new file mode 100644 index 00000000000..d6640bd56ba --- /dev/null +++ b/reference/forms/types/options/choice_label.rst.inc @@ -0,0 +1,39 @@ +choice_label +~~~~~~~~~~~~ + +.. versionadded:: 2.7 + The ``choice_label`` option was introduced in Symfony 2.7. + +**type**: ``callable`` or ``string`` **default**: ``null`` + +Returns the label for each choice. Can be a callable (which receives the choice +as first and the key of the ``choices`` array as second argument) or a property +path. + +If ``null``, the keys of the ``choices`` array are used as labels. + +* Using a callable to set the label:: + + $builder->add('attending', 'choice', array( + 'choices' => array( + 'yes' => true, + 'no' => false, + 'maybe' => null, + ), + 'choices_as_values' => true, + 'choice_label' => function ($choice, $key) { + return 'form.choice.'.$key; + }, + )); + +* Using a property path to set the label:: + + $builder->add('attending', 'choice', array( + 'choices' => array( + Status::getInstance(Status::YES), + Status::getInstance(Status::NO), + Status::getInstance(Status::MAYBE), + ), + 'choices_as_values' => true, + 'choice_label' => 'displayName', + )); diff --git a/reference/forms/types/options/choice_name.rst.inc b/reference/forms/types/options/choice_name.rst.inc new file mode 100644 index 00000000000..0b32f16a08b --- /dev/null +++ b/reference/forms/types/options/choice_name.rst.inc @@ -0,0 +1,18 @@ +choice_name +~~~~~~~~~~~ + +.. versionadded:: 2.7 + The ``choice_name`` option was introduced in Symfony 2.7. + +**type**: ``callable`` or ``string`` **default**: ``null`` + +Returns the form name for each choice. That name is used as name of the +checkbox/radio form for this choice. It is also used as index of the choice +views in the template. Can be a callable (like for ``choice_label``) or a +property path. + +The generated names must be valid form names, i.e. contain alpha-numeric +symbols, underscores, hyphens and colons only. They must start with an +alpha-numeric symbol or an underscore. + +If ``null``, an incrementing integer is used as name. diff --git a/reference/forms/types/options/choice_value.rst.inc b/reference/forms/types/options/choice_value.rst.inc new file mode 100644 index 00000000000..2f4feb94d84 --- /dev/null +++ b/reference/forms/types/options/choice_value.rst.inc @@ -0,0 +1,13 @@ +choice_value +~~~~~~~~~~~~ + +.. versionadded:: 2.7 + The ``choice_value`` option was introduced in Symfony 2.7. + +**type**: ``callable`` or ``string`` **default**: ``null`` + +Returns the string value for each choice. This value is displayed in the +``value`` attributes and submitted in the POST/PUT requests. Can be a +callable (like for ``choice_label``) or a property path. + +If ``null``, an incrementing integer is used as value. diff --git a/reference/forms/types/options/group_by.rst.inc b/reference/forms/types/options/group_by.rst.inc new file mode 100644 index 00000000000..33e0bfff510 --- /dev/null +++ b/reference/forms/types/options/group_by.rst.inc @@ -0,0 +1,29 @@ +group_by +~~~~~~~~ + +.. versionadded:: 2.7 + The ``group_by`` option was introduced in Symfony 2.7. + +**type**: ``array``, ``callable`` or ``string`` **default**: ``null`` + +Returns the grouping used for the choices. Can be an array/Traversable, a +callable (like for ``choice_label``) or a property path. + +The return values of the callable/property path are used as group labels. If +``null`` is returned, a choice is not grouped. + +If ``null``, the structure of the ``choices`` array is used to construct the +groups:: + + $builder->add('attending', 'choice', array( + 'choices' => array( + 'Decided' => array( + 'Yes' => true, + 'No' => false, + ), + 'Undecided' => array( + 'Maybe' => null, + ), + ), + 'choices_as_values' => true, + )); diff --git a/reference/forms/types/options/preferred_choices.rst.inc b/reference/forms/types/options/preferred_choices.rst.inc index f2289ee537b..2f668ca4913 100644 --- a/reference/forms/types/options/preferred_choices.rst.inc +++ b/reference/forms/types/options/preferred_choices.rst.inc @@ -1,16 +1,52 @@ preferred_choices ~~~~~~~~~~~~~~~~~ -**type**: ``array`` **default**: ``array()`` +**type**: ``array``, ``callable`` or ``string`` **default**: ``array()`` -If this option is specified, then a sub-set of all of the options will be +If this option is specified as an array, then a sub-set of all of the options will be moved to the top of the select menu. The following would move the "Baz" option to the top, with a visual separator between it and the rest of the options:: - $builder->add('foo_choices', 'choice', array( - 'choices' => array('foo' => 'Foo', 'bar' => 'Bar', 'baz' => 'Baz'), - 'preferred_choices' => array('baz'), + $builder->add('attending', 'choice', array( + 'choices' => array( + 'Yes' => true, + 'No' => false, + 'Maybe' => null, + ), + 'choices_as_values' => true, + 'preferred_choices' => array(true), + )); + +.. versionadded:: 2.7 + Setting a callable or propery path was introduced in Symfony 2.7. + +If this option is specified as a callable, then the the preferred options +are computed by the callback:: + + $builder->add('attending', 'choice', array( + 'choices' => array( + 'Yes' => true, + 'No' => false, + 'Maybe' => null, + ), + 'choices_as_values' => true, + 'preferred_choices' => function ($choice, $key) { + return true === $choice; + }, + )); + +If this option is specified as a property path, then the preferred options +are taken from the objects:: + + $builder->add('attending', 'choice', array( + 'choices' => array( + 'Yes' => Status::getInstance(Status::YES), + 'No' => Status::getInstance(Status::NO), + 'Maybe' => Status::getInstance(Status::MAYBE), + ), + 'choices_as_values' => true, + 'preferred_choices' => 'preferred', )); Note that preferred choices are only meaningful when rendering as a ``select`` From d3cf004557996506da7bb6f3334d0aae0cc78b23 Mon Sep 17 00:00:00 2001 From: Matthias Althaus Date: Fri, 30 Oct 2015 11:58:21 +0100 Subject: [PATCH 10/34] Added choice_loader basics --- reference/forms/types/choice.rst | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/reference/forms/types/choice.rst b/reference/forms/types/choice.rst index a6ea5bb205c..39a5297ded1 100644 --- a/reference/forms/types/choice.rst +++ b/reference/forms/types/choice.rst @@ -171,6 +171,18 @@ But don't be confused! If ``Full`` is selected (value ``0`` in HTML), ``1`` will be returned in your form. If ``Almost empty`` is selected (value ``2`` in HTML), ``0.1`` will be returned. +choice_loader +~~~~~~~~~~~~~ + +.. versionadded:: 2.7 + + The ``choice_loader`` option of ChoiceType was introduced in Symfony 2.7. + +The choice loader can be used to load the list only partially in cases where a +fully-loaded list is not necessary. + +**type**: :class:`Symfony\\Component\\Form\\ChoiceList\\Loader\\ChoiceLoaderInterface` + .. include:: /reference/forms/types/options/placeholder.rst.inc .. include:: /reference/forms/types/options/expanded.rst.inc From e1f583ba6df6b19576883946cdaef141cf9aaa8f Mon Sep 17 00:00:00 2001 From: Matthias Althaus Date: Fri, 30 Oct 2015 12:17:01 +0100 Subject: [PATCH 11/34] Added choices_as_values description --- reference/forms/types/choice.rst | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/reference/forms/types/choice.rst b/reference/forms/types/choice.rst index 39a5297ded1..116dd08adc0 100644 --- a/reference/forms/types/choice.rst +++ b/reference/forms/types/choice.rst @@ -123,6 +123,37 @@ is the item's label and the array value is the item's value:: able to use values that are not integers or strings (but e.g. floats or booleans). +choices_as_values +~~~~~~~~~~~~~~~~~ + +**type**: ``boolean`` **default**: false + +.. versionadded:: 2.7 + + The ``choices_as_values`` option of ChoiceType was introduced in Symfony 2.7. + +The ``choices_as_values`` option was introduced to ensure backward compatibility with the +modified handling of the ``choices`` optio. Being set to ``false`` the choices array +will be read as values mapping the keys. Setting the option to ``true`` will enable the new +handling of the choices mapping keys to values. + + * Before 2.7:: + $builder->add('gender', 'choice', array( + 'choices' => array('m' => 'Male', 'f' => 'Female'), + 'choices_as_values' => false, + )); + + * Optional since 2.7:: + $builder->add('gender', 'choice', array( + 'choices' => array('Male' => 'm', 'Female' => 'f'), + 'choices_as_values' => true, + )); + + * Default for 3.0:: + $builder->add('gender', 'choice', array( + 'choices' => array('Male' => 'm', 'Female' => 'f'), + )); + .. caution:: The ``choices_as_values`` option will be removed in Symfony 3.0, where From 889f123e479d76dc6f1fe1f2aaa10c8ae2288151 Mon Sep 17 00:00:00 2001 From: Matthias Althaus Date: Fri, 30 Oct 2015 12:21:32 +0100 Subject: [PATCH 12/34] Added choices_as_values description [amend] --- reference/forms/types/choice.rst | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/reference/forms/types/choice.rst b/reference/forms/types/choice.rst index 116dd08adc0..8b0516be30c 100644 --- a/reference/forms/types/choice.rst +++ b/reference/forms/types/choice.rst @@ -137,19 +137,22 @@ modified handling of the ``choices`` optio. Being set to ``false`` the choices a will be read as values mapping the keys. Setting the option to ``true`` will enable the new handling of the choices mapping keys to values. - * Before 2.7:: +* Before 2.7:: + $builder->add('gender', 'choice', array( 'choices' => array('m' => 'Male', 'f' => 'Female'), 'choices_as_values' => false, )); - * Optional since 2.7:: +* Optional since 2.7:: + $builder->add('gender', 'choice', array( 'choices' => array('Male' => 'm', 'Female' => 'f'), 'choices_as_values' => true, )); - * Default for 3.0:: +* Default for 3.0:: + $builder->add('gender', 'choice', array( 'choices' => array('Male' => 'm', 'Female' => 'f'), )); From e2dea8851cd55f47769dbf3d4e1b28416472d39c Mon Sep 17 00:00:00 2001 From: Matthias Althaus Date: Thu, 5 Nov 2015 09:39:03 +0100 Subject: [PATCH 13/34] Fixed linebreaking --- reference/forms/types/choice.rst | 33 ++++++++++--------- .../forms/types/options/choice_label.rst.inc | 6 ++-- .../forms/types/options/choice_name.rst.inc | 4 +-- .../forms/types/options/group_by.rst.inc | 12 +++---- .../types/options/preferred_choices.rst.inc | 8 ++--- 5 files changed, 33 insertions(+), 30 deletions(-) diff --git a/reference/forms/types/choice.rst b/reference/forms/types/choice.rst index 8b0516be30c..447518d4e3a 100644 --- a/reference/forms/types/choice.rst +++ b/reference/forms/types/choice.rst @@ -77,8 +77,8 @@ of checkboxes depending on the ``expanded`` option:: 'multiple' => true, )); -If you rely on your option value attribute (e.g. for JavaScript) you need to -set ``choice_value``, otherwise the option values will be mapped to integer +If you rely on your option value attribute (e.g. for JavaScript) you need +to set ``choice_value``, otherwise the option values will be mapped to integer values:: $builder->add('availability', 'choice', array( @@ -94,8 +94,8 @@ values:: 'multiple' => true, )); -You can also use the ``choice_loader`` option, which can be used to load the -list only partially in cases where a fully-loaded list is not necessary. +You can also use the ``choice_loader`` option, which can be used to load +the list only partially in cases where a fully-loaded list is not necessary. .. _forms-reference-choice-tags: @@ -130,12 +130,14 @@ choices_as_values .. versionadded:: 2.7 - The ``choices_as_values`` option of ChoiceType was introduced in Symfony 2.7. + The ``choices_as_values`` option of ChoiceType was introduced in Symfony + 2.7. -The ``choices_as_values`` option was introduced to ensure backward compatibility with the -modified handling of the ``choices`` optio. Being set to ``false`` the choices array -will be read as values mapping the keys. Setting the option to ``true`` will enable the new -handling of the choices mapping keys to values. +The ``choices_as_values`` option was introduced to ensure backward compatibility +with the modified handling of the ``choices`` optio. Being set to ``false`` +the choices array will be read as values mapping the keys. Setting the option +to ``true`` will enable the new handling of the choices mapping keys to +values. * Before 2.7:: @@ -159,9 +161,9 @@ handling of the choices mapping keys to values. .. caution:: - The ``choices_as_values`` option will be removed in Symfony 3.0, where - the choices will be passed in the values of the ``choices`` option by - default. + The ``choices_as_values`` option will be removed in Symfony 3.0, + where the choices will be passed in the values of the ``choices`` + option by default. choice_list ~~~~~~~~~~~ @@ -210,10 +212,11 @@ choice_loader .. versionadded:: 2.7 - The ``choice_loader`` option of ChoiceType was introduced in Symfony 2.7. + The ``choice_loader`` option of ChoiceType was introduced in Symfony + 2.7. -The choice loader can be used to load the list only partially in cases where a -fully-loaded list is not necessary. +The choice loader can be used to load the list only partially in cases where +a fully-loaded list is not necessary. **type**: :class:`Symfony\\Component\\Form\\ChoiceList\\Loader\\ChoiceLoaderInterface` diff --git a/reference/forms/types/options/choice_label.rst.inc b/reference/forms/types/options/choice_label.rst.inc index d6640bd56ba..73970631fdd 100644 --- a/reference/forms/types/options/choice_label.rst.inc +++ b/reference/forms/types/options/choice_label.rst.inc @@ -6,9 +6,9 @@ choice_label **type**: ``callable`` or ``string`` **default**: ``null`` -Returns the label for each choice. Can be a callable (which receives the choice -as first and the key of the ``choices`` array as second argument) or a property -path. +Returns the label for each choice. Can be a callable (which receives the +choice as first and the key of the ``choices`` array as second argument) +or a property path. If ``null``, the keys of the ``choices`` array are used as labels. diff --git a/reference/forms/types/options/choice_name.rst.inc b/reference/forms/types/options/choice_name.rst.inc index 0b32f16a08b..6b0c108f61c 100644 --- a/reference/forms/types/options/choice_name.rst.inc +++ b/reference/forms/types/options/choice_name.rst.inc @@ -8,8 +8,8 @@ choice_name Returns the form name for each choice. That name is used as name of the checkbox/radio form for this choice. It is also used as index of the choice -views in the template. Can be a callable (like for ``choice_label``) or a -property path. +views in the template. Can be a callable (like for ``choice_label``) or +a property path. The generated names must be valid form names, i.e. contain alpha-numeric symbols, underscores, hyphens and colons only. They must start with an diff --git a/reference/forms/types/options/group_by.rst.inc b/reference/forms/types/options/group_by.rst.inc index 33e0bfff510..a0c59b5effd 100644 --- a/reference/forms/types/options/group_by.rst.inc +++ b/reference/forms/types/options/group_by.rst.inc @@ -6,14 +6,14 @@ group_by **type**: ``array``, ``callable`` or ``string`` **default**: ``null`` -Returns the grouping used for the choices. Can be an array/Traversable, a -callable (like for ``choice_label``) or a property path. +Returns the grouping used for the choices. Can be an array/Traversable, +a callable (like for ``choice_label``) or a property path. -The return values of the callable/property path are used as group labels. If -``null`` is returned, a choice is not grouped. +The return values of the callable/property path are used as group labels. +If ``null`` is returned, a choice is not grouped. -If ``null``, the structure of the ``choices`` array is used to construct the -groups:: +If ``null``, the structure of the ``choices`` array is used to construct +the groups:: $builder->add('attending', 'choice', array( 'choices' => array( diff --git a/reference/forms/types/options/preferred_choices.rst.inc b/reference/forms/types/options/preferred_choices.rst.inc index 2f668ca4913..5eb90021d4a 100644 --- a/reference/forms/types/options/preferred_choices.rst.inc +++ b/reference/forms/types/options/preferred_choices.rst.inc @@ -3,10 +3,10 @@ preferred_choices **type**: ``array``, ``callable`` or ``string`` **default**: ``array()`` -If this option is specified as an array, then a sub-set of all of the options will be -moved to the top of the select menu. The following would move the "Baz" -option to the top, with a visual separator between it and the rest of the -options:: +If this option is specified as an array, then a sub-set of all of the options +will be moved to the top of the select menu. The following would move the +"Baz" option to the top, with a visual separator between it and the rest +of the options:: $builder->add('attending', 'choice', array( 'choices' => array( From 68725e891ca0267dbaa284e10d7105998c1ee97d Mon Sep 17 00:00:00 2001 From: Matthias Althaus Date: Thu, 5 Nov 2015 09:40:25 +0100 Subject: [PATCH 14/34] Fixed preferred choices example --- reference/forms/types/options/preferred_choices.rst.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reference/forms/types/options/preferred_choices.rst.inc b/reference/forms/types/options/preferred_choices.rst.inc index 5eb90021d4a..521070c4c98 100644 --- a/reference/forms/types/options/preferred_choices.rst.inc +++ b/reference/forms/types/options/preferred_choices.rst.inc @@ -5,7 +5,7 @@ preferred_choices If this option is specified as an array, then a sub-set of all of the options will be moved to the top of the select menu. The following would move the -"Baz" option to the top, with a visual separator between it and the rest +"Yes" option to the top, with a visual separator between it and the rest of the options:: $builder->add('attending', 'choice', array( From 79c905cd83bcb4ea7745830d3df4dd9548ca575b Mon Sep 17 00:00:00 2001 From: Ryan Weaver Date: Sun, 8 Nov 2015 16:47:42 -0500 Subject: [PATCH 15/34] changing option order - choice_name and choice_value seem like edge cases --- reference/forms/types/choice.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/reference/forms/types/choice.rst b/reference/forms/types/choice.rst index 447518d4e3a..e04b3f49bef 100644 --- a/reference/forms/types/choice.rst +++ b/reference/forms/types/choice.rst @@ -17,8 +17,6 @@ option. | | - `choice_list`_ | | | - `choice_loader`_ | | | - `choice_label`_ | -| | - `choice_name`_ | -| | - `choice_value`_ | | | - `choice_attr`_ | | | - `choices_as_values`_ | | | - `placeholder`_ | @@ -26,6 +24,8 @@ option. | | - `multiple`_ | | | - `preferred_choices`_ | | | - `group_by`_ | +| | - `choice_name`_ | +| | - `choice_value`_ | +-------------+------------------------------------------------------------------------------+ | Overridden | - `compound`_ | | options | - `empty_data`_ | @@ -230,14 +230,14 @@ a fully-loaded list is not necessary. .. include:: /reference/forms/types/options/choice_label.rst.inc -.. include:: /reference/forms/types/options/choice_name.rst.inc - -.. include:: /reference/forms/types/options/choice_value.rst.inc - .. include:: /reference/forms/types/options/choice_attr.rst.inc .. include:: /reference/forms/types/options/group_by.rst.inc +.. include:: /reference/forms/types/options/choice_name.rst.inc + +.. include:: /reference/forms/types/options/choice_value.rst.inc + Overridden Options ------------------ From 7aa4106f709d397c61f149ac9e5358a9d54eadf5 Mon Sep 17 00:00:00 2001 From: Ryan Weaver Date: Sun, 8 Nov 2015 18:51:04 -0500 Subject: [PATCH 16/34] Completely re-working all the choice docs, including screenshots - for 2.7 changes --- images/reference/form/choice-example1.png | Bin 0 -> 28958 bytes images/reference/form/choice-example2.png | Bin 0 -> 30469 bytes images/reference/form/choice-example3.png | Bin 0 -> 33817 bytes images/reference/form/choice-example4.png | Bin 0 -> 51730 bytes images/reference/form/choice-example5.png | Bin 0 -> 40125 bytes reference/forms/types/choice.rst | 241 +++++++++++------- reference/forms/types/entity.rst | 101 ++++---- reference/forms/types/form.rst | 2 + .../forms/types/options/choice_attr.rst.inc | 12 +- .../forms/types/options/choice_label.rst.inc | 39 ++- .../forms/types/options/choice_name.rst.inc | 14 +- .../forms/types/options/choice_value.rst.inc | 10 +- .../forms/types/options/group_by.rst.inc | 44 +++- .../types/options/preferred_choices.rst.inc | 67 +++-- 14 files changed, 303 insertions(+), 227 deletions(-) create mode 100644 images/reference/form/choice-example1.png create mode 100644 images/reference/form/choice-example2.png create mode 100644 images/reference/form/choice-example3.png create mode 100644 images/reference/form/choice-example4.png create mode 100644 images/reference/form/choice-example5.png diff --git a/images/reference/form/choice-example1.png b/images/reference/form/choice-example1.png new file mode 100644 index 0000000000000000000000000000000000000000..00e47d0bb27b0d7a10209fb76b4f2ccfb15fe1af GIT binary patch literal 28958 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 z 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 literal 0 HcmV?d00001 diff --git a/images/reference/form/choice-example4.png b/images/reference/form/choice-example4.png new file mode 100644 index 0000000000000000000000000000000000000000..7f6071d3532d201cdd2cc12a7e79a13e32ec8e8a GIT binary patch literal 51730 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 NQ;<=S20u3p{(shqYc~J@ literal 0 HcmV?d00001 diff --git a/images/reference/form/choice-example5.png b/images/reference/form/choice-example5.png new file mode 100644 index 0000000000000000000000000000000000000000..188eeeec234acc347c85c3c0e9b762336aecdd1d GIT binary patch literal 40125 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 Hl+XkKkYm`i literal 0 HcmV?d00001 diff --git a/reference/forms/types/choice.rst b/reference/forms/types/choice.rst index e04b3f49bef..9d89b6b1f4a 100644 --- a/reference/forms/types/choice.rst +++ b/reference/forms/types/choice.rst @@ -1,31 +1,30 @@ .. index:: single: Forms; Fields; choice -choice Field Type -================= +choice Field Type (select drop-downs, radio buttons & checkboxes) +================================================================= A multi-purpose field used to allow the user to "choose" one or more options. It can be rendered as a ``select`` tag, radio buttons, or checkboxes. -To use this field, you must specify *either* the ``choice_list`` or ``choices`` -option. +To use this field, you must specify *either* ``choices`` or ``choice_loader`` option. +-------------+------------------------------------------------------------------------------+ | Rendered as | can be various tags (see below) | +-------------+------------------------------------------------------------------------------+ | Options | - `choices`_ | -| | - `choice_list`_ | +| | - `choices_as_values`_ | | | - `choice_loader`_ | | | - `choice_label`_ | | | - `choice_attr`_ | -| | - `choices_as_values`_ | | | - `placeholder`_ | | | - `expanded`_ | | | - `multiple`_ | | | - `preferred_choices`_ | | | - `group_by`_ | -| | - `choice_name`_ | | | - `choice_value`_ | +| | - `choice_name`_ | +| | - `choice_list`_ (deprecated) | +-------------+------------------------------------------------------------------------------+ | Overridden | - `compound`_ | | options | - `empty_data`_ | @@ -51,56 +50,112 @@ Example Usage ------------- The easiest way to use this field is to specify the choices directly via -the ``choices`` option. The key of the array becomes the value that's actually -set on your underlying object (e.g. ``m``), while the value is what the -user sees on the form (e.g. ``Male``). - -.. code-block:: php +the ``choices`` option:: - $builder->add('gender', 'choice', array( - 'choices' => array('Male' => 'm', 'Female' => 'f'), + $builder->add('isAttending', 'choice', array( + 'choices' => array( + 'Maybe' => null, + 'Yes' => true, + 'No' => false, + ), + // *this line is important* 'choices_as_values' => true, - 'required' => false, )); -By setting ``multiple`` to true, you can allow the user to choose multiple -values. The widget will be rendered as a multiple ``select`` tag or a series -of checkboxes depending on the ``expanded`` option:: +This will create a ``select`` drop-down like this: - $builder->add('availability', 'choice', array( - 'choices' => array( - 'Morning' => 'morning', - 'Afternoon' => 'afternoon', - 'Evening' => 'evening', - ), - 'choices_as_values' => true, - 'multiple' => true, - )); +.. image:: /images/reference/form/choice-example1.png + :align: center + :scale: 50 + :width: 350 -If you rely on your option value attribute (e.g. for JavaScript) you need -to set ``choice_value``, otherwise the option values will be mapped to integer -values:: +If the user selects ``No``, the form will return ``false`` for this field. Similarly, +if the starting data for this field is ``true``, then ``Yes`` will be auto-selected. +In other words, the **value** of each item is the value you want to get/set in PHP +code, while the **key** is what will be shown to the user. - $builder->add('availability', 'choice', array( - 'choices' => array( - 'Morning' => 'morning', - 'Afternoon' => 'afternoon', - 'Evening' => 'evening', - ), - 'choices_as_values' => true, - 'choice_value' => function ($choice) { - return $choice; - }, - 'multiple' => true, - )); +.. caution:: -You can also use the ``choice_loader`` option, which can be used to load -the list only partially in cases where a fully-loaded list is not necessary. + The ``choices_as_values`` *must* be set to ``true`` in all cases. This activates + the "new" choice type API, which was introduced in Symfony 2.7. If you omit this + option (or set it to ``false``), you'll activate the old API, which is deprecated + and will be removed in 3.0. To read about the old API, read an older version of + the docs. + +Advanced Example (with Objects!) +-------------------------------- + +This field has a *lot* of options and most control how the field is displayed. In +this example, the underlying data is some ``Category`` object that has a ``getName()`` +method:: + + $builder + ->add('category', 'choice', [ + 'choices' => [ + new Category('Cat1'), + new Category('Cat2'), + new Category('Cat3'), + new Category('Cat4'), + ], + 'choices_as_values' => true, + 'choice_label' => function($val, $key, $index) { + /** @var Category $val */ + return strtoupper($val->getName()); + }, + 'choice_attr' => function($val, $key, $index) { + return ['class' => 'category_'.strtolower($val->getName())]; + }, + 'group_by' => function($val, $key, $index) { + // randomly assign things into 2 groups + return rand(0, 1) == 1 ? 'Group A' : 'Group B' + }, + 'preferred_choices' => function($val, $key, $index) { + return $val->getName() == 'Cat2' || $val->getName() == 'Cat3'; + }, + ]); + +You can also customize the `choice_name`_ and `choice_value`_ of each choice if +you need further HTML customization. .. _forms-reference-choice-tags: .. include:: /reference/forms/types/options/select_how_rendered.rst.inc +Customizing each Option's Text (Label) +-------------------------------------- + +Normally, the array key of each item in the ``choices`` option is used as the +text that's shown to the user. But that can be completely customized via the +`choice_label`_ option. Check it out for more details. + +.. _form-choices-simple-grouping: + +Grouping Options +---------------- + +You can easily "group" options in a select by passing a multi-dimensional choices array:: + + $builder->add('stockStatus', 'choice', [ + 'choices' => [ + 'Main Statuses' => [ + 'Yes' => 'stock_yes', + 'No' => 'stock_no', + ], + 'Out of Stock Statuses' => [ + 'Backordered' => 'stock_backordered', + 'Discontinued' => 'stock_discontinued', + ] + ], + 'choices_as_values' => true, + ); + +.. image:: /images/reference/form/choice-example3.png + :align: center + :scale: 50 + :width: 350 + +To get fancier, use the `group_by`_ option. + Field Options ------------- @@ -113,16 +168,12 @@ This is the most basic way to specify the choices that should be used by this field. The ``choices`` option is an array, where the array key is the item's label and the array value is the item's value:: - $builder->add('gender', 'choice', array( - 'choices' => array('Male' => 'm', 'Female' => 'f'), + $builder->add('inStock', 'choice', array( + 'choices' => array('In Stock' => true, 'Out of Stock' => false), + // always include this 'choices_as_values' => true, )); -.. versionadded:: 2.7 - Symfony 2.7 introduced the option to flip the ``choices`` array to be - able to use values that are not integers or strings (but e.g. floats - or booleans). - choices_as_values ~~~~~~~~~~~~~~~~~ @@ -130,18 +181,17 @@ choices_as_values .. versionadded:: 2.7 - The ``choices_as_values`` option of ChoiceType was introduced in Symfony - 2.7. + The ``choices_as_values`` option was introduced in Symfony 2.7. -The ``choices_as_values`` option was introduced to ensure backward compatibility -with the modified handling of the ``choices`` optio. Being set to ``false`` -the choices array will be read as values mapping the keys. Setting the option -to ``true`` will enable the new handling of the choices mapping keys to -values. +The ``choices_as_values`` option was added to keep backward compatibility with the +*old* way of handling the ``choices`` option. When set to ``false`` (or omitted), +the choice keys are used as the underlying value and the choice values are shown +to the user. -* Before 2.7:: +* Before 2.7 (and deprecated now):: $builder->add('gender', 'choice', array( + // Shows "Male" to the user, returns "m" when selected 'choices' => array('m' => 'Male', 'f' => 'Female'), 'choices_as_values' => false, )); @@ -149,21 +199,53 @@ values. * Optional since 2.7:: $builder->add('gender', 'choice', array( + // Shows "Male" to the user, returns "m" when selected 'choices' => array('Male' => 'm', 'Female' => 'f'), 'choices_as_values' => true, )); +In Symfony 3.0, ``choices_as_values`` option will go away, but it's behavior will +always be used: + * Default for 3.0:: $builder->add('gender', 'choice', array( 'choices' => array('Male' => 'm', 'Female' => 'f'), )); -.. caution:: +choice_loader +~~~~~~~~~~~~~ + +.. versionadded:: 2.7 + + The ``choice_loader`` option was added in Symfony 2.7. + +**type**: :class:`Symfony\\Component\\Form\\ChoiceList\\Loader\\ChoiceLoaderInterface` + +The ``choice_loader`` can be used to only partially load the choices in cases where +a fully-loaded list is not necessary. This is only needed in advanced cases and +would replace the ``choices`` option. + +.. _reference-form-choice-label: + +.. include:: /reference/forms/types/options/choice_label.rst.inc + +.. include:: /reference/forms/types/options/choice_attr.rst.inc + +.. include:: /reference/forms/types/options/placeholder.rst.inc + +.. include:: /reference/forms/types/options/expanded.rst.inc + +.. include:: /reference/forms/types/options/multiple.rst.inc + +.. include:: /reference/forms/types/options/preferred_choices.rst.inc + +.. include:: /reference/forms/types/options/group_by.rst.inc + +.. include:: /reference/forms/types/options/choice_value.rst.inc + +.. include:: /reference/forms/types/options/choice_name.rst.inc - The ``choices_as_values`` option will be removed in Symfony 3.0, - where the choices will be passed in the values of the ``choices`` - option by default. choice_list ~~~~~~~~~~~ @@ -171,7 +253,7 @@ choice_list .. caution:: The ``choice_list`` option of ChoiceType was deprecated in Symfony 2.7. - You should use ``choices`` or ``choice_loader`` now. + You should use `choices`_ or `choice_loader`_ now. **type**: :class:`Symfony\\Component\\Form\\Extension\\Core\\ChoiceList\\ChoiceListInterface` @@ -207,37 +289,6 @@ But don't be confused! If ``Full`` is selected (value ``0`` in HTML), ``1`` will be returned in your form. If ``Almost empty`` is selected (value ``2`` in HTML), ``0.1`` will be returned. -choice_loader -~~~~~~~~~~~~~ - -.. versionadded:: 2.7 - - The ``choice_loader`` option of ChoiceType was introduced in Symfony - 2.7. - -The choice loader can be used to load the list only partially in cases where -a fully-loaded list is not necessary. - -**type**: :class:`Symfony\\Component\\Form\\ChoiceList\\Loader\\ChoiceLoaderInterface` - -.. include:: /reference/forms/types/options/placeholder.rst.inc - -.. include:: /reference/forms/types/options/expanded.rst.inc - -.. include:: /reference/forms/types/options/multiple.rst.inc - -.. include:: /reference/forms/types/options/preferred_choices.rst.inc - -.. include:: /reference/forms/types/options/choice_label.rst.inc - -.. include:: /reference/forms/types/options/choice_attr.rst.inc - -.. include:: /reference/forms/types/options/group_by.rst.inc - -.. include:: /reference/forms/types/options/choice_name.rst.inc - -.. include:: /reference/forms/types/options/choice_value.rst.inc - Overridden Options ------------------ diff --git a/reference/forms/types/entity.rst b/reference/forms/types/entity.rst index e6c26a35c37..0f769b1ee51 100644 --- a/reference/forms/types/entity.rst +++ b/reference/forms/types/entity.rst @@ -12,15 +12,13 @@ objects from the database. +-------------+------------------------------------------------------------------+ | Rendered as | can be various tags (see :ref:`forms-reference-choice-tags`) | +-------------+------------------------------------------------------------------+ -| Options | - `choice_label`_ | -| | - `class`_ | -| | - `data_class`_ | -| | - `em`_ | -| | - `group_by`_ | +| Options | - `class`_ | +| | - `choice_label`_ | | | - `query_builder`_ | +| | - `em`_ | +-------------+------------------------------------------------------------------+ -| Overridden | - `choice_list`_ | -| options | - `choices`_ | +| Overridden | - `choices`_ | +| options | | +-------------+------------------------------------------------------------------+ | Inherited | from the :doc:`choice ` type: | | options | | @@ -28,6 +26,7 @@ objects from the database. | | - `expanded`_ | | | - `multiple`_ | | | - `preferred_choices`_ | +| | - `group_by`_ | | | | | | from the :doc:`form ` type: | | | | @@ -103,6 +102,15 @@ then you can supply the ``choices`` option directly:: Field Options ------------- +class +~~~~~ + +**type**: ``string`` **required** + +The class of your entity (e.g. ``AcmeStoreBundle:Category``). This can be +a fully-qualified class name (e.g. ``Acme\StoreBundle\Entity\Category``) +or the short alias name (as shown prior). + choice_label ~~~~~~~~~~~~ @@ -110,17 +118,33 @@ choice_label The ``choice_label`` option was introduced in Symfony 2.7. Prior to Symfony 2.7, it was called ``property`` (which has the same functionality). -**type**: ``string`` or a Closure +**type**: ``string`` or ``callable`` + +This is the property that should be used for displaying the entities as text in +the HTML element:: + + $builder->add('category', 'entity', array( + 'class' => 'AppBundle:Category', + 'choice_label' => 'displayName', + )); + +If left blank, the entity object will be cast to a string and so must have a ``__toString()`` +method. You can also pass a callback function for more control:: + + $builder->add('category', 'entity', array( + 'class' => 'AppBundle:Category', + 'choice_label' => function ($category) { + return $category->getDisplayName(); + } + )); -This is the property that should be used for displaying the entities -as text in the HTML element. If left blank, the entity object will be -cast into a string and so must have a ``__toString()`` method. If using Closure, it should -take a single argument, which is the entity and return the label of this entity. +The method is called for each entity in the list and passed to the function. For +more detais, see the main :ref:`choice_label ` documentation. .. note:: - The ``choice_label`` option is the property path used to display the option. - So you can use anything supported by the + When passing a string, the ``choice_label`` option is a property path. So you + can use anything supported by the :doc:`PropertyAccessor component ` For example, if the translations property is actually an associative @@ -131,36 +155,6 @@ take a single argument, which is the entity and return the label of this entity. 'choice_label' => 'translations[en].name', )); -class -~~~~~ - -**type**: ``string`` **required** - -The class of your entity (e.g. ``AcmeStoreBundle:Category``). This can be -a fully-qualified class name (e.g. ``Acme\StoreBundle\Entity\Category``) -or the short alias name (as shown prior). - -.. include:: /reference/forms/types/options/data_class.rst.inc - -em -~~ - -**type**: ``string`` | ``Doctrine\Common\Persistence\ObjectManager`` **default**: the default entity manager - -If specified, the specified entity manager will be used to load the choices -instead of the default entity manager. - -group_by -~~~~~~~~ - -**type**: ``string`` or a Closure - -This is a property path (e.g. ``author.name``) used to organize the -available choices in groups. It only works when rendered as a select tag -and does so by adding ``optgroup`` elements around options. Choices that -do not return a value for this property path are rendered directly under -the select tag, without a surrounding optgroup. - query_builder ~~~~~~~~~~~~~ @@ -172,18 +166,17 @@ either be a ``QueryBuilder`` object or a Closure. If using a Closure, it should take a single argument, which is the ``EntityRepository`` of the entity and return an instance of ``QueryBuilder``. -Overridden Options ------------------- +em +~~ -choice_list -~~~~~~~~~~~ +**type**: ``string`` | ``Doctrine\Common\Persistence\ObjectManager`` **default**: the default entity manager + +If specified, the specified entity manager will be used to load the choices +instead of the default entity manager. -**default**: :class:`Symfony\\Bridge\\Doctrine\\Form\\ChoiceList\\EntityChoiceList` -The purpose of the ``entity`` type is to create and configure this ``EntityChoiceList`` -for you, by using all of the above options. If you need to override this -option, you may just consider using the :doc:`/reference/forms/types/choice` -directly. +Overridden Options +------------------ choices ~~~~~~~ @@ -214,6 +207,8 @@ type: is a complete example in the cookbook article :doc:`/cookbook/form/form_collections`. +.. include:: /reference/forms/types/options/group_by.rst.inc + .. include:: /reference/forms/types/options/preferred_choices.rst.inc .. note:: diff --git a/reference/forms/types/form.rst b/reference/forms/types/form.rst index e9686c4a77e..66ba30ca19c 100644 --- a/reference/forms/types/form.rst +++ b/reference/forms/types/form.rst @@ -128,6 +128,8 @@ The actual default value of this option depends on other field options: .. include:: /reference/forms/types/options/post_max_size_message.rst.inc +.. _reference-form-option-property-path: + .. include:: /reference/forms/types/options/property_path.rst.inc .. include:: /reference/forms/types/options/read_only.rst.inc diff --git a/reference/forms/types/options/choice_attr.rst.inc b/reference/forms/types/options/choice_attr.rst.inc index a5f929ee72b..4b4d8f187ac 100644 --- a/reference/forms/types/options/choice_attr.rst.inc +++ b/reference/forms/types/options/choice_attr.rst.inc @@ -6,8 +6,9 @@ choice_attr **type**: ``array``, ``callable`` or ``string`` **default**: ``array()`` -Returns the additional HTML attributes for choices. Can be an array, a callable -(like for ``choice_label``) or a property path. +Use this to add additional HTML attributes to each choice. This can be an array +of attributes (if they are the same for each choice), a callable or a property path +(just like `choice_label`_). If an array, the keys of the ``choices`` array must be used as keys:: @@ -18,7 +19,8 @@ If an array, the keys of the ``choices`` array must be used as keys:: 'Maybe' => null, ), 'choices_as_values' => true, - 'choice_attr' => array( - 'Maybe' => array('class' => 'greyed-out'), - ), + 'choice_attr' => function($val, $key, $index) { + // adds a class like attending_yes, attending_no, etc + return ['class' => 'attending_'.strtolower($key)]; + }, )); diff --git a/reference/forms/types/options/choice_label.rst.inc b/reference/forms/types/options/choice_label.rst.inc index 73970631fdd..fbec1c9fce2 100644 --- a/reference/forms/types/options/choice_label.rst.inc +++ b/reference/forms/types/options/choice_label.rst.inc @@ -6,13 +6,9 @@ choice_label **type**: ``callable`` or ``string`` **default**: ``null`` -Returns the label for each choice. Can be a callable (which receives the -choice as first and the key of the ``choices`` array as second argument) -or a property path. - -If ``null``, the keys of the ``choices`` array are used as labels. - -* Using a callable to set the label:: +Normally, the array key of each item in the ``choices`` option is used as the +text that's shown to the user. The ``choice_label`` option allows you to take +more control:: $builder->add('attending', 'choice', array( 'choices' => array( @@ -21,18 +17,35 @@ If ``null``, the keys of the ``choices`` array are used as labels. 'maybe' => null, ), 'choices_as_values' => true, - 'choice_label' => function ($choice, $key) { - return 'form.choice.'.$key; + 'choice_label' => function ($value, $key, $index) { + if ($value == true) { + return 'Definitely!'; + } + return strtoupper($key); + + // or if you want to translate some key + //return 'form.choice.'.$key; }, )); -* Using a property path to set the label:: +This method is called for *each* choice, passing you the choice ``$value`` and the +``$key`` from the choices array (``$index`` is related to `choice_value`_). This +will give you: + +.. image:: /images/reference/form/choice-example2.png + :align: center + :scale: 50 + :width: 350 + +If your choice values are objects, then ``choice_label`` can also be a +:ref:`reference-form-option-property-path `. Imagine you have some +``Status`` class with a ``getDisplayName()`` method:: $builder->add('attending', 'choice', array( 'choices' => array( - Status::getInstance(Status::YES), - Status::getInstance(Status::NO), - Status::getInstance(Status::MAYBE), + new Status(Status::YES), + new Status(Status::NO), + new Status::(Status::MAYBE), ), 'choices_as_values' => true, 'choice_label' => 'displayName', diff --git a/reference/forms/types/options/choice_name.rst.inc b/reference/forms/types/options/choice_name.rst.inc index 6b0c108f61c..45a228489a3 100644 --- a/reference/forms/types/options/choice_name.rst.inc +++ b/reference/forms/types/options/choice_name.rst.inc @@ -6,13 +6,9 @@ choice_name **type**: ``callable`` or ``string`` **default**: ``null`` -Returns the form name for each choice. That name is used as name of the -checkbox/radio form for this choice. It is also used as index of the choice -views in the template. Can be a callable (like for ``choice_label``) or -a property path. +Controls the internal field name of the choice. You normally don't care about this, +but in some advanced cases, you might. For example, this "name" becomes the index +of the choice views in the template. -The generated names must be valid form names, i.e. contain alpha-numeric -symbols, underscores, hyphens and colons only. They must start with an -alpha-numeric symbol or an underscore. - -If ``null``, an incrementing integer is used as name. +This can be a callable or a property path. See `choice_label`_ for similar usage. +If ``null`` is used, an incrementing integer is used as the name. diff --git a/reference/forms/types/options/choice_value.rst.inc b/reference/forms/types/options/choice_value.rst.inc index 2f4feb94d84..653ce798b5d 100644 --- a/reference/forms/types/options/choice_value.rst.inc +++ b/reference/forms/types/options/choice_value.rst.inc @@ -6,8 +6,10 @@ choice_value **type**: ``callable`` or ``string`` **default**: ``null`` -Returns the string value for each choice. This value is displayed in the -``value`` attributes and submitted in the POST/PUT requests. Can be a -callable (like for ``choice_label``) or a property path. +Returns the string "value" for each choice. This is used in the ``value`` attribute +in HTML and submitted in the POST/PUT requests. You don't normally need to worry +about this, but it might be handy when processing an API request (since you can +configure the value that will be sent in the API request). -If ``null``, an incrementing integer is used as value. +This can be a callable or a property path. See `choice_label`_ for similar usage. +If ``null`` is used, an incrementing integer is used as the name. diff --git a/reference/forms/types/options/group_by.rst.inc b/reference/forms/types/options/group_by.rst.inc index a0c59b5effd..126bc5cc15c 100644 --- a/reference/forms/types/options/group_by.rst.inc +++ b/reference/forms/types/options/group_by.rst.inc @@ -6,24 +6,40 @@ group_by **type**: ``array``, ``callable`` or ``string`` **default**: ``null`` -Returns the grouping used for the choices. Can be an array/Traversable, -a callable (like for ``choice_label``) or a property path. +You can easily "group" options in a select simply by passing a multi-dimensional +array to ``choices``. See the :ref:`Grouping Options ` +section about that. -The return values of the callable/property path are used as group labels. -If ``null`` is returned, a choice is not grouped. +The ``group_by`` option is an alternative way to group choices, which gives you +a bit more flexibility. -If ``null``, the structure of the ``choices`` array is used to construct -the groups:: +Take the following example:: - $builder->add('attending', 'choice', array( + $builder->add('publishAt', 'choice', array( 'choices' => array( - 'Decided' => array( - 'Yes' => true, - 'No' => false, - ), - 'Undecided' => array( - 'Maybe' => null, - ), + 'now' => new \DateTime('now'), + 'tomorrow' => new \DateTime('+1 day'), + '1 week' => new \DateTime('+1 week'), + '1 month' => new \DateTime('+1 month') ), 'choices_as_values' => true, + 'group_by' => function($val, $key, $index) { + if ($val <= new \DateTime('+3 days')) { + return 'Soon'; + } else { + return 'Later'; + } + }, )); + +This groups the dates that are within 3 days into "Soon" and everyting else into +a "Later" group: + +.. image:: /images/reference/form/choice-example5.png + :align: center + :scale: 50 + :width: 350 + +If you return ``null``, the option won't be grouped. You can also pass a string +"property path" that will be called to get the group. See the `choice_label`_ for +details about using a property path. diff --git a/reference/forms/types/options/preferred_choices.rst.inc b/reference/forms/types/options/preferred_choices.rst.inc index 521070c4c98..cd9f4496d4e 100644 --- a/reference/forms/types/options/preferred_choices.rst.inc +++ b/reference/forms/types/options/preferred_choices.rst.inc @@ -3,65 +3,64 @@ preferred_choices **type**: ``array``, ``callable`` or ``string`` **default**: ``array()`` -If this option is specified as an array, then a sub-set of all of the options -will be moved to the top of the select menu. The following would move the -"Yes" option to the top, with a visual separator between it and the rest -of the options:: +This option allows you to move certain choices to the top of your list with a visual +separator between them and the rest of the options. If you have a form of languages, +you can list the most popular on top, like Bork Bork and Pirate:: - $builder->add('attending', 'choice', array( + $builder->add('language', 'choice', array( 'choices' => array( - 'Yes' => true, - 'No' => false, - 'Maybe' => null, + 'English' => 'en', + 'Spanish' => 'es', + 'Bork' => 'muppets', + 'Pirate' => 'arr' ), 'choices_as_values' => true, - 'preferred_choices' => array(true), + 'preferred_choices' => array('muppets', 'arr') )); .. versionadded:: 2.7 Setting a callable or propery path was introduced in Symfony 2.7. -If this option is specified as a callable, then the the preferred options -are computed by the callback:: +This options can also be a callback function to give you more flexibility. This might +be especially useful if your values are objects:: - $builder->add('attending', 'choice', array( + $builder->add('publishAt', 'choice', array( 'choices' => array( - 'Yes' => true, - 'No' => false, - 'Maybe' => null, + 'now' => new \DateTime('now'), + 'tomorrow' => new \DateTime('+1 day'), + '1 week' => new \DateTime('+1 week'), + '1 month' => new \DateTime('+1 month') ), 'choices_as_values' => true, - 'preferred_choices' => function ($choice, $key) { - return true === $choice; + 'preferred_choices' => function ($val, $key) { + // prefer options within 3 days + return $val <= new \DateTime('+3 days'); }, )); -If this option is specified as a property path, then the preferred options -are taken from the objects:: +This will "prefer" the "now" and "tomorrow" choices only: - $builder->add('attending', 'choice', array( - 'choices' => array( - 'Yes' => Status::getInstance(Status::YES), - 'No' => Status::getInstance(Status::NO), - 'Maybe' => Status::getInstance(Status::MAYBE), - ), - 'choices_as_values' => true, - 'preferred_choices' => 'preferred', - )); +.. image:: /images/reference/form/choice-example3.png + :align: center + :scale: 50 + :width: 350 + +Finally, if your values are objects, you can also specific a property path string +on the object that will return true or false. -Note that preferred choices are only meaningful when rendering as a ``select`` -element (i.e. ``expanded`` is false). The preferred choices and normal choices -are separated visually by a set of dotted lines (i.e. ``-------------------``). -This can be customized when rendering the field: +The preferred choices are only meaningful when rendering a ``select`` element +(i.e. ``expanded`` false). The preferred choices and normal choices are separated +visually by a set of dotted lines (i.e. ``-------------------``). This can be customized +when rendering the field: .. configuration-block:: .. code-block:: twig - {{ form_widget(form.foo_choices, { 'separator': '=====' }) }} + {{ form_widget(form.publishAt, { 'separator': '=====' }) }} .. code-block:: php - widget($form['foo_choices'], array( + widget($form['publishAt'], array( 'separator' => '=====' )) ?> From a2ad990822c9fb1ea389f66407a632f0783eb94a Mon Sep 17 00:00:00 2001 From: Ryan Weaver Date: Sun, 8 Nov 2015 19:02:52 -0500 Subject: [PATCH 17/34] fixing bad reference --- reference/forms/types/options/choice_label.rst.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reference/forms/types/options/choice_label.rst.inc b/reference/forms/types/options/choice_label.rst.inc index fbec1c9fce2..a7b1029ae34 100644 --- a/reference/forms/types/options/choice_label.rst.inc +++ b/reference/forms/types/options/choice_label.rst.inc @@ -38,7 +38,7 @@ will give you: :width: 350 If your choice values are objects, then ``choice_label`` can also be a -:ref:`reference-form-option-property-path `. Imagine you have some +:ref:`property path `. Imagine you have some ``Status`` class with a ``getDisplayName()`` method:: $builder->add('attending', 'choice', array( From 69fc3c3a4a6bc001f445a70e36c6450807d956bd Mon Sep 17 00:00:00 2001 From: Ryan Weaver Date: Sun, 8 Nov 2015 19:37:40 -0500 Subject: [PATCH 18/34] removing scaling on images --- reference/forms/types/choice.rst | 4 ---- reference/forms/types/options/choice_label.rst.inc | 2 -- reference/forms/types/options/group_by.rst.inc | 2 -- reference/forms/types/options/preferred_choices.rst.inc | 2 -- 4 files changed, 10 deletions(-) diff --git a/reference/forms/types/choice.rst b/reference/forms/types/choice.rst index 9d89b6b1f4a..107fa110b86 100644 --- a/reference/forms/types/choice.rst +++ b/reference/forms/types/choice.rst @@ -66,8 +66,6 @@ This will create a ``select`` drop-down like this: .. image:: /images/reference/form/choice-example1.png :align: center - :scale: 50 - :width: 350 If the user selects ``No``, the form will return ``false`` for this field. Similarly, if the starting data for this field is ``true``, then ``Yes`` will be auto-selected. @@ -151,8 +149,6 @@ You can easily "group" options in a select by passing a multi-dimensional choice .. image:: /images/reference/form/choice-example3.png :align: center - :scale: 50 - :width: 350 To get fancier, use the `group_by`_ option. diff --git a/reference/forms/types/options/choice_label.rst.inc b/reference/forms/types/options/choice_label.rst.inc index a7b1029ae34..d2ebb176906 100644 --- a/reference/forms/types/options/choice_label.rst.inc +++ b/reference/forms/types/options/choice_label.rst.inc @@ -34,8 +34,6 @@ will give you: .. image:: /images/reference/form/choice-example2.png :align: center - :scale: 50 - :width: 350 If your choice values are objects, then ``choice_label`` can also be a :ref:`property path `. Imagine you have some diff --git a/reference/forms/types/options/group_by.rst.inc b/reference/forms/types/options/group_by.rst.inc index 126bc5cc15c..2cb16818d29 100644 --- a/reference/forms/types/options/group_by.rst.inc +++ b/reference/forms/types/options/group_by.rst.inc @@ -37,8 +37,6 @@ a "Later" group: .. image:: /images/reference/form/choice-example5.png :align: center - :scale: 50 - :width: 350 If you return ``null``, the option won't be grouped. You can also pass a string "property path" that will be called to get the group. See the `choice_label`_ for diff --git a/reference/forms/types/options/preferred_choices.rst.inc b/reference/forms/types/options/preferred_choices.rst.inc index cd9f4496d4e..e9b0f54ea8f 100644 --- a/reference/forms/types/options/preferred_choices.rst.inc +++ b/reference/forms/types/options/preferred_choices.rst.inc @@ -42,8 +42,6 @@ This will "prefer" the "now" and "tomorrow" choices only: .. image:: /images/reference/form/choice-example3.png :align: center - :scale: 50 - :width: 350 Finally, if your values are objects, you can also specific a property path string on the object that will return true or false. From 0ad7b18d3a6e338ca02ec1d03bfbc6968f1d5015 Mon Sep 17 00:00:00 2001 From: Ryan Weaver Date: Sun, 8 Nov 2015 19:45:20 -0500 Subject: [PATCH 19/34] fixing wrong image name --- reference/forms/types/choice.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reference/forms/types/choice.rst b/reference/forms/types/choice.rst index 107fa110b86..161708654f2 100644 --- a/reference/forms/types/choice.rst +++ b/reference/forms/types/choice.rst @@ -147,7 +147,7 @@ You can easily "group" options in a select by passing a multi-dimensional choice 'choices_as_values' => true, ); -.. image:: /images/reference/form/choice-example3.png +.. image:: /images/reference/form/choice-example4.png :align: center To get fancier, use the `group_by`_ option. From 70f5e850feab99a5221ac07c8861040918c37b7a Mon Sep 17 00:00:00 2001 From: Ryan Weaver Date: Tue, 10 Nov 2015 20:25:30 -0500 Subject: [PATCH 20/34] tweaks thanks to comments --- reference/forms/types/choice.rst | 8 +++++--- reference/forms/types/entity.rst | 4 ++-- reference/forms/types/options/choice_value.rst.inc | 8 ++++++++ reference/forms/types/options/group_by.rst.inc | 2 +- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/reference/forms/types/choice.rst b/reference/forms/types/choice.rst index 161708654f2..20d8f2af519 100644 --- a/reference/forms/types/choice.rst +++ b/reference/forms/types/choice.rst @@ -189,10 +189,12 @@ to the user. $builder->add('gender', 'choice', array( // Shows "Male" to the user, returns "m" when selected 'choices' => array('m' => 'Male', 'f' => 'Female'), + // before 2.7, this options didn't actually exist, but the + // behavior was equivalent to setting this to false in 2.7. 'choices_as_values' => false, )); -* Optional since 2.7:: +* Since 2.7:: $builder->add('gender', 'choice', array( // Shows "Male" to the user, returns "m" when selected @@ -200,8 +202,8 @@ to the user. 'choices_as_values' => true, )); -In Symfony 3.0, ``choices_as_values`` option will go away, but it's behavior will -always be used: +In Symfony 3.0, the ``choices_as_values`` option doesn't exist, but the ``choice`` +type behaves as if it were set to true: * Default for 3.0:: diff --git a/reference/forms/types/entity.rst b/reference/forms/types/entity.rst index 0f769b1ee51..01ce0f7862d 100644 --- a/reference/forms/types/entity.rst +++ b/reference/forms/types/entity.rst @@ -171,8 +171,8 @@ em **type**: ``string`` | ``Doctrine\Common\Persistence\ObjectManager`` **default**: the default entity manager -If specified, the specified entity manager will be used to load the choices -instead of the default entity manager. +If specified, this entity manager will be used to load the choices +instead of the ``default`` entity manager. Overridden Options diff --git a/reference/forms/types/options/choice_value.rst.inc b/reference/forms/types/options/choice_value.rst.inc index 653ce798b5d..f6574cf4de9 100644 --- a/reference/forms/types/options/choice_value.rst.inc +++ b/reference/forms/types/options/choice_value.rst.inc @@ -13,3 +13,11 @@ configure the value that will be sent in the API request). This can be a callable or a property path. See `choice_label`_ for similar usage. If ``null`` is used, an incrementing integer is used as the name. + +.. caution:: + + In Symfony 2.7, there was a small backwards-compatibility break with how the + `value` attribute of options is generated. This is not a problem unless you + rely on the option values in JavaScript. See `issue #14825`_ for details. + +.. _`issue #14285`: https://github.com/symfony/symfony/pull/14825 diff --git a/reference/forms/types/options/group_by.rst.inc b/reference/forms/types/options/group_by.rst.inc index 2cb16818d29..9147a0a09bf 100644 --- a/reference/forms/types/options/group_by.rst.inc +++ b/reference/forms/types/options/group_by.rst.inc @@ -32,7 +32,7 @@ Take the following example:: }, )); -This groups the dates that are within 3 days into "Soon" and everyting else into +This groups the dates that are within 3 days into "Soon" and everything else into a "Later" group: .. image:: /images/reference/form/choice-example5.png From b55d1709941a3b1e3feb3c3b6f14b1a9c76568ba Mon Sep 17 00:00:00 2001 From: Ryan Weaver Date: Tue, 10 Nov 2015 20:28:27 -0500 Subject: [PATCH 21/34] typo! --- reference/forms/types/options/choice_value.rst.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reference/forms/types/options/choice_value.rst.inc b/reference/forms/types/options/choice_value.rst.inc index f6574cf4de9..fda5a4e7542 100644 --- a/reference/forms/types/options/choice_value.rst.inc +++ b/reference/forms/types/options/choice_value.rst.inc @@ -20,4 +20,4 @@ If ``null`` is used, an incrementing integer is used as the name. `value` attribute of options is generated. This is not a problem unless you rely on the option values in JavaScript. See `issue #14825`_ for details. -.. _`issue #14285`: https://github.com/symfony/symfony/pull/14825 +.. _`issue #14825`: https://github.com/symfony/symfony/pull/14825 From c5fa40954f8777e2905b85d1b458b1ca6b663257 Mon Sep 17 00:00:00 2001 From: Ryan Weaver Date: Wed, 11 Nov 2015 10:48:17 -0500 Subject: [PATCH 22/34] fix thanks to Javier --- reference/forms/types/choice.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reference/forms/types/choice.rst b/reference/forms/types/choice.rst index 20d8f2af519..14184d5e64e 100644 --- a/reference/forms/types/choice.rst +++ b/reference/forms/types/choice.rst @@ -189,7 +189,7 @@ to the user. $builder->add('gender', 'choice', array( // Shows "Male" to the user, returns "m" when selected 'choices' => array('m' => 'Male', 'f' => 'Female'), - // before 2.7, this options didn't actually exist, but the + // before 2.7, this option didn't actually exist, but the // behavior was equivalent to setting this to false in 2.7. 'choices_as_values' => false, )); From d019f83c7d72d9a4d1a30b8139694b8f2eabcb7e Mon Sep 17 00:00:00 2001 From: Javier Eguiluz Date: Wed, 11 Nov 2015 17:13:49 +0100 Subject: [PATCH 23/34] Removed an outdate paragraph --- cookbook/security/form_login_setup.rst | 4 ---- 1 file changed, 4 deletions(-) diff --git a/cookbook/security/form_login_setup.rst b/cookbook/security/form_login_setup.rst index 3b58d5e3240..6fea457d556 100644 --- a/cookbook/security/form_login_setup.rst +++ b/cookbook/security/form_login_setup.rst @@ -12,10 +12,6 @@ In this entry, you'll build a traditional login form. Of course, when the user logs in, you can load your users from anywhere - like the database. See :ref:`security-user-providers` for details. -This chapter assumes that you've followed the beginning of the -:doc:`security chapter ` and have ``http_basic`` authentication -working properly. - First, enable form login under your firewall: .. configuration-block:: From e840343bb9933fdfc564cdca0166b6f903db3e4c Mon Sep 17 00:00:00 2001 From: Ryan Weaver Date: Thu, 12 Nov 2015 07:52:32 -0500 Subject: [PATCH 24/34] Changing variable for clarity and removing unnecessary line break thanks to @OskarStark --- reference/forms/types/choice.rst | 47 ++++++++++++++++---------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/reference/forms/types/choice.rst b/reference/forms/types/choice.rst index 14184d5e64e..1d37c9c6f6f 100644 --- a/reference/forms/types/choice.rst +++ b/reference/forms/types/choice.rst @@ -87,30 +87,29 @@ This field has a *lot* of options and most control how the field is displayed. I this example, the underlying data is some ``Category`` object that has a ``getName()`` method:: - $builder - ->add('category', 'choice', [ - 'choices' => [ - new Category('Cat1'), - new Category('Cat2'), - new Category('Cat3'), - new Category('Cat4'), - ], - 'choices_as_values' => true, - 'choice_label' => function($val, $key, $index) { - /** @var Category $val */ - return strtoupper($val->getName()); - }, - 'choice_attr' => function($val, $key, $index) { - return ['class' => 'category_'.strtolower($val->getName())]; - }, - 'group_by' => function($val, $key, $index) { - // randomly assign things into 2 groups - return rand(0, 1) == 1 ? 'Group A' : 'Group B' - }, - 'preferred_choices' => function($val, $key, $index) { - return $val->getName() == 'Cat2' || $val->getName() == 'Cat3'; - }, - ]); + $builder->add('category', 'choice', [ + 'choices' => [ + new Category('Cat1'), + new Category('Cat2'), + new Category('Cat3'), + new Category('Cat4'), + ], + 'choices_as_values' => true, + 'choice_label' => function($category, $key, $index) { + /** @var Category $category */ + return strtoupper($category->getName()); + }, + 'choice_attr' => function($category, $key, $index) { + return ['class' => 'category_'.strtolower($category->getName())]; + }, + 'group_by' => function($category, $key, $index) { + // randomly assign things into 2 groups + return rand(0, 1) == 1 ? 'Group A' : 'Group B' + }, + 'preferred_choices' => function($category, $key, $index) { + return $category->getName() == 'Cat2' || $category->getName() == 'Cat3'; + }, + ]); You can also customize the `choice_name`_ and `choice_value`_ of each choice if you need further HTML customization. From 30eb4fa22a4add3b1a1f61b6ea1143fcd0512345 Mon Sep 17 00:00:00 2001 From: Zander Baldwin Date: Wed, 11 Nov 2015 17:47:25 +0000 Subject: [PATCH 25/34] Book: Update Service Container Documentation Missing XML block wrapper for the Tags section example. Fixes #5882. --- book/service_container.rst | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/book/service_container.rst b/book/service_container.rst index 7646cfff9db..5bcd90ebe1e 100644 --- a/book/service_container.rst +++ b/book/service_container.rst @@ -318,10 +318,10 @@ The service container is built using a single configuration resource be imported from inside this file in one way or another. This gives you absolute flexibility over the services in your application. -External service configuration can be imported in two different ways. The first -method, commonly used to import container configuration from the bundles you've -created - is via the ``imports`` directive. The second method, although slightly more -complex offers more flexibility and is commonly used to import third-party bundle +External service configuration can be imported in two different ways. The first +method, commonly used to import container configuration from the bundles you've +created - is via the ``imports`` directive. The second method, although slightly more +complex offers more flexibility and is commonly used to import third-party bundle configuration. Read on to learn more about both methods. .. index:: @@ -943,13 +943,15 @@ to be used for a specific purpose. Take the following example: xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> - + + - - + + + .. code-block:: php From b0cae3beb9c7bd8a0c896f4975eb43daf78df8e1 Mon Sep 17 00:00:00 2001 From: Javier Eguiluz Date: Tue, 17 Nov 2015 09:00:29 +0100 Subject: [PATCH 26/34] Removed the use of ContainerAware class --- book/routing.rst | 25 ++++++--------------- cookbook/form/dynamic_form_modification.rst | 19 ++++++++-------- 2 files changed, 17 insertions(+), 27 deletions(-) diff --git a/book/routing.rst b/book/routing.rst index 3881dc78a3a..dacefe4d848 100644 --- a/book/routing.rst +++ b/book/routing.rst @@ -1397,25 +1397,14 @@ route. With this information, any URL can easily be generated:: .. note:: - In controllers that don't extend Symfony's base - :class:`Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller`, - you can use the ``router`` service's - :method:`Symfony\\Component\\Routing\\Router::generate` method:: + The ``generateUrl()`` method defined in the base + :class:`Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller` class is + just a shortcut for this code:: - use Symfony\Component\DependencyInjection\ContainerAware; - - class MainController extends ContainerAware - { - public function showAction($slug) - { - // ... - - $url = $this->container->get('router')->generate( - 'blog_show', - array('slug' => 'my-blog-post') - ); - } - } + $url = $this->container->get('router')->generate( + 'blog_show', + array('slug' => 'my-blog-post') + ); In an upcoming section, you'll learn how to generate URLs from inside templates. diff --git a/cookbook/form/dynamic_form_modification.rst b/cookbook/form/dynamic_form_modification.rst index df49ff753c9..f79dbc403cd 100644 --- a/cookbook/form/dynamic_form_modification.rst +++ b/cookbook/form/dynamic_form_modification.rst @@ -416,25 +416,26 @@ it with :ref:`dic-tags-form-type`. array('security.context') ); -If you wish to create it from within a controller or any other service that has -access to the form factory, you then use:: +If you wish to create it from within a service that has access to the form factory, +you then use:: - use Symfony\Component\DependencyInjection\ContainerAware; + $form = $formFactory->create('friend_message'); - class FriendMessageController extends ContainerAware +In a controller that extends the :class:`Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller` +class, you can simply call:: + + use Symfony\Bundle\FrameworkBundle\Controller\Controller; + + class FriendMessageController extends Controller { public function newAction(Request $request) { - $form = $this->get('form.factory')->create('friend_message'); + $form = $this->createForm('friend_message'); // ... } } -If you extend the ``Symfony\Bundle\FrameworkBundle\Controller\Controller`` class, you can simply call:: - - $form = $this->createForm('friend_message'); - You can also easily embed the form type into another form:: // inside some other "form type" class From 6d7c54e796d991606912ad8fea04a7d047966b9a Mon Sep 17 00:00:00 2001 From: strannik-06 Date: Fri, 20 Nov 2015 14:58:38 +0200 Subject: [PATCH 27/34] Update debug_formatter.rst --- components/console/helpers/debug_formatter.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/console/helpers/debug_formatter.rst b/components/console/helpers/debug_formatter.rst index 885c89ab69c..b5af8bb9782 100644 --- a/components/console/helpers/debug_formatter.rst +++ b/components/console/helpers/debug_formatter.rst @@ -117,7 +117,7 @@ Stopping a Program ------------------ When a program is stopped, you can use -:method:`Symfony\\Component\\Console\\Helper\\DebugFormatterHelper::run` to +:method:`Symfony\\Component\\Console\\Helper\\DebugFormatterHelper::stop` to notify this to the users:: // ... From 44c86305439b9fa86a2c48e9485c50f9dc9f3b1a Mon Sep 17 00:00:00 2001 From: Mathieu Lemoine Date: Fri, 20 Nov 2015 14:11:34 -0500 Subject: [PATCH 28/34] [Book][Templating] Update absolute URL asset to match 2.7 --- book/templating.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/templating.rst b/book/templating.rst index 0a4dc85dd17..4c1de72f752 100644 --- a/book/templating.rst +++ b/book/templating.rst @@ -1098,7 +1098,7 @@ if you are using Twig (or the third argument if you are using PHP) to ``true``: .. code-block:: html+jinja - Symfony! + Symfony! .. code-block:: html+php From 50274c466f6b09f9ca92939ede99ea0b638c69f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2EEng=2E=20Ren=C3=A9=20Schwarz?= Date: Sat, 21 Nov 2015 15:25:20 +0100 Subject: [PATCH 29/34] Fixed some wrong line numbers in doctrine.rst Some line numbers for the code example in section "Persisting Objects to the Database" were wrong. --- book/doctrine.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/book/doctrine.rst b/book/doctrine.rst index 003b31798ea..e1f0768730d 100644 --- a/book/doctrine.rst +++ b/book/doctrine.rst @@ -534,10 +534,10 @@ Take a look at the previous example in more detail: responsible for handling the process of persisting and fetching objects to and from the database. -* **line 16** The ``persist()`` method tells Doctrine to "manage" the ``$product`` +* **line 17** The ``persist()`` method tells Doctrine to "manage" the ``$product`` object. This does not actually cause a query to be made to the database (yet). -* **line 17** When the ``flush()`` method is called, Doctrine looks through +* **line 18** When the ``flush()`` method is called, Doctrine looks through all of the objects that it's managing to see if they need to be persisted to the database. In this example, the ``$product`` object has not been persisted yet, so the entity manager executes an ``INSERT`` query and a From 68fdb033a4bf02b4b608a3577d52a6d25cf30243 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Mon, 23 Nov 2015 13:49:08 +0100 Subject: [PATCH 30/34] Added new security advisories to the docs --- contributing/code/security.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contributing/code/security.rst b/contributing/code/security.rst index ab4cc402b1c..a468aa0da3b 100644 --- a/contributing/code/security.rst +++ b/contributing/code/security.rst @@ -96,6 +96,8 @@ Security Advisories This section indexes security vulnerabilities that were fixed in Symfony releases, starting from Symfony 1.0.0: +* November 23, 2015: `CVE-2015-8125: Potential Remote Timing Attack Vulnerability in Security Remember-Me Service `_ (2.3.35, 2.6.12 and 2.7.7) +* November 23, 2015: `CVE-2015-8124: Session Fixation in the "Remember Me" Login Feature `_ (2.3.35, 2.6.12 and 2.7.7) * May 26, 2015: `CVE-2015-4050: ESI unauthorized access `_ (Symfony 2.3.29, 2.5.12 and 2.6.8) * April 1, 2015: `CVE-2015-2309: Unsafe methods in the Request class `_ (Symfony 2.3.27, 2.5.11 and 2.6.6) * April 1, 2015: `CVE-2015-2308: Esi Code Injection `_ (Symfony 2.3.27, 2.5.11 and 2.6.6) From beef19e9ff7e2e6e5c117fecdc570e02aaaf4036 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Fri, 14 Aug 2015 12:26:47 +0200 Subject: [PATCH 31/34] Tell about SYMFONY__TEMPLATING__HELPER__CODE__FILE_LINK_FORMAT --- reference/configuration/framework.rst | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/reference/configuration/framework.rst b/reference/configuration/framework.rst index cace8c57949..55262ae5db5 100644 --- a/reference/configuration/framework.rst +++ b/reference/configuration/framework.rst @@ -211,7 +211,7 @@ If you're using an IDE like TextMate or Mac Vim, then Symfony can turn all of the file paths in an exception message into a link, which will open that file in your IDE. -Symfony contains preconfigured urls for some popular IDEs, you can set them +Symfony contains preconfigured URLs for some popular IDEs, you can set them using the following keys: * ``textmate`` @@ -222,7 +222,7 @@ using the following keys: .. versionadded:: 2.3.14 The ``emacs`` and ``sublime`` editors were introduced in Symfony 2.3.14. -You can also specify a custom url string. If you do this, all percentage +You can also specify a custom URL string. If you do this, all percentage signs (``%``) must be doubled to escape that character. For example, if you use PHPstorm on the Mac OS platform, you will do something like: @@ -261,8 +261,11 @@ you use PHPstorm on the Mac OS platform, you will do something like: Of course, since every developer uses a different IDE, it's better to set this on a system level. This can be done by setting the ``xdebug.file_link_format`` -in the ``php.ini`` configuration to the url string. If this configuration -value is set, then the ``ide`` option will be ignored. +in the ``php.ini`` configuration to the URL string. + +If you don't use Xdebug, another way is to set this URL string in the +``SYMFONY__TEMPLATING__HELPER__CODE__FILE_LINK_FORMAT`` environment variable. +If any of these configurations values are set, the ``ide`` option will be ignored. .. _reference-framework-test: From 5abf3e26677e34460b1514a53eac719ed1ec29ce Mon Sep 17 00:00:00 2001 From: Turdaliev Nursultan Date: Wed, 25 Nov 2015 12:26:25 +0100 Subject: [PATCH 32/34] Update front controller --- create_framework/front-controller.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/create_framework/front-controller.rst b/create_framework/front-controller.rst index 0e140393dfa..3ef47eb618b 100644 --- a/create_framework/front-controller.rst +++ b/create_framework/front-controller.rst @@ -159,7 +159,7 @@ web root directory: Now, configure your web server root directory to point to ``web/`` and all other files won't be accessible from the client anymore. -To test your changes in a browser (``http://localhost:4321/?name=Fabien``), run +To test your changes in a browser (``http://localhost:4321/hello/?name=Fabien``), run the PHP built-in server: .. code-block:: bash From 1498140702caa4dcc723397bb3d1e336f95ca4b4 Mon Sep 17 00:00:00 2001 From: Oskar Stark Date: Fri, 23 Oct 2015 08:48:57 +0200 Subject: [PATCH 33/34] move the getEntityManager, only get it if needed --- cookbook/doctrine/event_listeners_subscribers.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cookbook/doctrine/event_listeners_subscribers.rst b/cookbook/doctrine/event_listeners_subscribers.rst index f9fc092bd49..8bbdb402d2f 100644 --- a/cookbook/doctrine/event_listeners_subscribers.rst +++ b/cookbook/doctrine/event_listeners_subscribers.rst @@ -135,10 +135,10 @@ a ``postPersist`` method, which will be called when the event is dispatched:: public function postPersist(LifecycleEventArgs $args) { $entity = $args->getEntity(); - $entityManager = $args->getEntityManager(); // perhaps you only want to act on some "Product" entity if ($entity instanceof Product) { + $entityManager = $args->getEntityManager(); // ... do something with the Product } } @@ -191,10 +191,10 @@ interface and have an event method for each event it subscribes to:: public function index(LifecycleEventArgs $args) { $entity = $args->getEntity(); - $entityManager = $args->getEntityManager(); // perhaps you only want to act on some "Product" entity if ($entity instanceof Product) { + $entityManager = $args->getEntityManager(); // ... do something with the Product } } From fab0985f3ed32f9fca6d04ec00a6a94ba41108c0 Mon Sep 17 00:00:00 2001 From: WouterJ Date: Wed, 25 Nov 2015 15:25:13 +0100 Subject: [PATCH 34/34] [#5828] Return early --- cookbook/doctrine/event_listeners_subscribers.rst | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/cookbook/doctrine/event_listeners_subscribers.rst b/cookbook/doctrine/event_listeners_subscribers.rst index 8bbdb402d2f..bda41b7c212 100644 --- a/cookbook/doctrine/event_listeners_subscribers.rst +++ b/cookbook/doctrine/event_listeners_subscribers.rst @@ -136,11 +136,13 @@ a ``postPersist`` method, which will be called when the event is dispatched:: { $entity = $args->getEntity(); - // perhaps you only want to act on some "Product" entity - if ($entity instanceof Product) { - $entityManager = $args->getEntityManager(); - // ... do something with the Product + // only act on some "Product" entity + if (!$entity instanceof Product) { + return; } + + $entityManager = $args->getEntityManager(); + // ... do something with the Product } }