Skip to content

Navigation Menu

Sign in
Appearance settings

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

Provide feedback

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

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit ec36b1a

Browse filesBrowse files
committed
Merge branch '2.8' into 3.3
2 parents 6c0ad0e + 923c187 commit ec36b1a
Copy full SHA for ec36b1a

File tree

Expand file treeCollapse file tree

12 files changed

+98
-23
lines changed
Filter options
Expand file treeCollapse file tree

12 files changed

+98
-23
lines changed

‎components/finder.rst

Copy file name to clipboardExpand all lines: components/finder.rst
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ Search in several locations by chaining calls to
8383
:method:`Symfony\\Component\\Finder\\Finder::in`::
8484

8585
// search inside *both* directories
86-
$finder->files()->in(array(__DIR__, '/elsewhere'));
86+
$finder->in(array(__DIR__, '/elsewhere'));
8787

8888
// same as above
8989
$finder->in(__DIR__)->in('/elsewhere');

‎components/property_access.rst

Copy file name to clipboardExpand all lines: components/property_access.rst
+46Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,51 @@ see `Enable other Features`_.
314314
315315
var_dump($person->getWouter()); // array(...)
316316
317+
Writing to Array Properties
318+
~~~~~~~~~~~~~~~~~~~~~~~~~~~
319+
320+
The ``PropertyAccessor`` class allows to update the content of arrays stored in
321+
properties through *adder* and *remover* methods.
322+
323+
.. code-block:: php
324+
325+
// ...
326+
class Person
327+
{
328+
/**
329+
* @var string[]
330+
*/
331+
private $children = array();
332+
333+
public function getChildren(): array
334+
{
335+
return $this->children;
336+
}
337+
338+
public function addChild(string $name): void
339+
{
340+
$this->children[$name] = $name;
341+
}
342+
343+
public function removeChild(string $name): void
344+
{
345+
unset($this->children[$name]);
346+
}
347+
}
348+
349+
$person = new Person();
350+
$accessor->setValue($person, 'children', array('kevin', 'wouter'));
351+
352+
var_dump($person->getChildren()); // array('kevin', 'wouter')
353+
354+
The PropertyAccess component checks for methods called ``add<SingularOfThePropertyName>()``
355+
and ``remove<SingularOfThePropertyName>()``. Both methods must be defined.
356+
For instance, in the previous example, the component looks for the ``addChild()``
357+
and ``removeChild()`` methods to access to the ``children`` property.
358+
`The Inflector component`_ is used to find the singular of a property name.
359+
360+
If available, *adder* and *remover* methods have priority over a *setter* method.
361+
317362
Checking Property Paths
318363
-----------------------
319364

@@ -407,3 +452,4 @@ Or you can pass parameters directly to the constructor (not the recommended way)
407452

408453

409454
.. _Packagist: https://packagist.org/packages/symfony/property-access
455+
.. _The Inflector component: https://github.com/symfony/inflector

‎http_cache.rst

Copy file name to clipboardExpand all lines: http_cache.rst
+7-3Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ Nottingham's `Cache Tutorial`_.
3333
.. index::
3434
single: Cache; Proxy
3535
single: Cache; Reverse proxy
36-
single: Cache; Gateway
3736

3837
.. _gateway-caches:
3938

@@ -287,11 +286,15 @@ Safe Methods: Only caching GET or HEAD requests
287286
HTTP caching only works for "safe" HTTP methods (like GET and HEAD). This means
288287
two things:
289288

290-
* Don't try to cache PUT, POST or DELETE requests. It won't work and with good
291-
reason. These methods are meant to be used when mutating the state of your application
289+
* Don't try to cache PUT or DELETE requests. It won't work and with good reason.
290+
These methods are meant to be used when mutating the state of your application
292291
(e.g. deleting a blog post). Caching them would prevent certain requests from hitting
293292
and mutating your application.
294293

294+
* POST requests are generally considered uncachable, but `they can be cached`_
295+
when they include explicit freshness information. However POST caching is not
296+
widely implemented, so you should avoid it if possible.
297+
295298
* You should *never* change the state of your application (e.g. update a blog post)
296299
when responding to a GET or HEAD request. If those requests are cached, future
297300
requests may not actually hit your server.
@@ -367,3 +370,4 @@ Learn more
367370
.. _`RFC 7234 - Caching`: https://tools.ietf.org/html/rfc7234
368371
.. _`RFC 7232 - Conditional Requests`: https://tools.ietf.org/html/rfc7232
369372
.. _`FOSHttpCacheBundle`: http://foshttpcachebundle.readthedocs.org/
373+
.. _`they can be cached`: https://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-20#section-2.3.4

‎reference/constraints/Collection.rst

Copy file name to clipboardExpand all lines: reference/constraints/Collection.rst
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ error will be returned. If set to ``true``, extra fields are ok.
310310
extraFieldsMessage
311311
~~~~~~~~~~~~~~~~~~
312312

313-
**type**: ``boolean`` **default**: ``The fields {{ fields }} were not expected.``
313+
**type**: ``boolean`` **default**: ``This field was not expected.``
314314

315315
The message shown if `allowExtraFields`_ is false and an extra field is
316316
detected.
@@ -328,7 +328,7 @@ option are not present in the underlying collection.
328328
missingFieldsMessage
329329
~~~~~~~~~~~~~~~~~~~~
330330

331-
**type**: ``boolean`` **default**: ``The fields {{ fields }} are missing.``
331+
**type**: ``boolean`` **default**: ``This field is missing.``
332332

333333
The message shown if `allowMissingFields`_ is false and one or more fields
334334
are missing from the underlying collection.

‎reference/constraints/Length.rst

Copy file name to clipboardExpand all lines: reference/constraints/Length.rst
+7-2Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
Length
22
======
33

4-
Validates that a given string length is *between* some minimum and maximum
5-
value.
4+
Validates that a given string length is *between* some minimum and maximum value.
5+
6+
.. caution::
7+
8+
``null`` and empty strings are not handled by this constraint. You need to
9+
also add the :doc:`/reference/constraints/NotBlank` or :doc:`/reference/constraints/NotNull`
10+
constraints to validate against these.
611

712
+----------------+----------------------------------------------------------------------+
813
| Applies to | :ref:`property or method <validation-property-target>` |

‎reference/forms/types/options/choice_value.rst.inc

Copy file name to clipboardExpand all lines: reference/forms/types/options/choice_value.rst.inc
+15-8Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,23 @@ choice_value
33

44
**type**: ``callable`` or ``string`` **default**: ``null``
55

6-
Returns the string "value" for each choice. This is used in the ``value`` attribute
7-
in HTML and submitted in the POST/PUT requests. You don't normally need to worry
8-
about this, but it might be handy when processing an API request (since you can
9-
configure the value that will be sent in the API request).
6+
Returns the string "value" for each choice, which must be unique across all choices.
7+
This is used in the ``value`` attribute in HTML and submitted in the POST/PUT requests.
8+
You don't normally need to worry about this, but it might be handy when processing
9+
an API request (since you can configure the value that will be sent in the API request).
1010

11-
This can be a callable or a property path. See `choice_label`_ for similar usage.
12-
If ``null`` is used, an incrementing integer is used as the name.
11+
This can be a callable or a property path. If ``null`` is given, an incrementing
12+
integer is used as the value.
1313

14-
If you are using a callable to populate ``choice_value``, you need to check
15-
for the case that the value of the field may be ``null``.
14+
If you pass a callable, it will receive one argument: the choice itself. When using
15+
the :doc:`/reference/forms/types/entity`, the argument will be the entity object
16+
for each choice or ``null`` in some cases, which you need to handle:
17+
18+
.. code-block:: php
19+
20+
'choice_value' => function (MyOptionEntity $entity = null) {
21+
return $entity ? $entity->getId() : '';
22+
},
1623

1724
.. caution::
1825

‎request/load_balancer_reverse_proxy.rst

Copy file name to clipboardExpand all lines: request/load_balancer_reverse_proxy.rst
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ How to Configure Symfony to Work behind a Load Balancer or a Reverse Proxy
22
==========================================================================
33

44
When you deploy your application, you may be behind a load balancer (e.g.
5-
an AWS Elastic Load Balancer) or a reverse proxy (e.g. Varnish for
5+
an AWS Elastic Load Balancing) or a reverse proxy (e.g. Varnish for
66
:doc:`caching</http_cache>`).
77

88
For the most part, this doesn't cause any problems with Symfony. But, when
@@ -53,7 +53,7 @@ so you can also pass your own value (e.g. ``0b00110``).
5353
But what if the IP of my Reverse Proxy Changes Constantly!
5454
----------------------------------------------------------
5555

56-
Some reverse proxies (like Amazon's Elastic Load Balancers) don't have a
56+
Some reverse proxies (like AWS Elastic Load Balancing) don't have a
5757
static IP address or even a range that you can target with the CIDR notation.
5858
In this case, you'll need to - *very carefully* - trust *all* proxies.
5959

‎security/csrf_in_login_form.rst

Copy file name to clipboardExpand all lines: security/csrf_in_login_form.rst
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ for CSRF. In this article you'll learn how you can use it in your login form.
1616
Configuring CSRF Protection
1717
---------------------------
1818

19-
First, make sure that the CSRF protection is enabled in the main cofiguration
19+
First, make sure that the CSRF protection is enabled in the main configuration
2020
file:
2121

2222
.. configuration-block::

‎service_container.rst

Copy file name to clipboardExpand all lines: service_container.rst
+14Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -571,6 +571,20 @@ Actually, once you define a parameter, it can be referenced via the ``%parameter
571571
syntax in *any* other service configuration file - like ``config.yml``. Many parameters
572572
are defined in a :ref:`parameters.yml file <config-parameters-yml>`.
573573

574+
You can then fetch the parameter in the service::
575+
576+
class SiteUpdateManager
577+
{
578+
// ...
579+
580+
private $adminEmail;
581+
582+
public function __construct($adminEmail)
583+
{
584+
$this->adminEmail = $adminEmail;
585+
}
586+
}
587+
574588
You can also fetch parameters directly from the container::
575589

576590
public function newAction()

‎service_container/parameters.rst

Copy file name to clipboardExpand all lines: service_container/parameters.rst
+1-2Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,7 @@ and hidden with the service definition:
7878
7979
.. code-block:: php
8080
81-
use AppBundle\Service\Mailer;
82-
use Symfony\Component\DependencyInjection\Reference;
81+
use AppBundle\Mailer;
8382
8483
$container->setParameter('mailer.transport', 'sendmail');
8584

‎templating.rst

Copy file name to clipboardExpand all lines: templating.rst
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Creating and Using Templates
66

77
As explained in :doc:`the previous article </controller>`, controllers are
88
responsible for handling each request that comes into a Symfony application and
9-
the usually end up rendering a template to generate the response contents.
9+
they usually end up rendering a template to generate the response contents.
1010

1111
In reality, the controller delegates most of the heavy work to other places so
1212
that code can be tested and reused. When a controller needs to generate HTML,

‎validation/custom_constraint.rst

Copy file name to clipboardExpand all lines: validation/custom_constraint.rst
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ includes some simple default logic::
4545
// in the base Symfony\Component\Validator\Constraint class
4646
public function validatedBy()
4747
{
48-
return ContainsAlphanumericValidator::class;
48+
return get_class($this).'Validator';
4949
}
5050

5151
In other words, if you create a custom ``Constraint`` (e.g. ``MyConstraint``),

0 commit comments

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