From 05492b277df8298d98ea5b6a2f95fe43bedb58dd Mon Sep 17 00:00:00 2001 From: WouterJ Date: Fri, 31 Jan 2014 16:30:35 +0100 Subject: [PATCH 01/32] Clarify parameters conventions --- components/dependency_injection/parameters.rst | 13 ++++++++++--- contributing/code/standards.rst | 2 ++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/components/dependency_injection/parameters.rst b/components/dependency_injection/parameters.rst index 4265fae224c..fc78b36ad37 100644 --- a/components/dependency_injection/parameters.rst +++ b/components/dependency_injection/parameters.rst @@ -25,6 +25,13 @@ and set a parameter in the container with:: $container->setParameter('mailer.transport', 'sendmail'); +.. caution:: + + The used ``.`` notation is just a + :ref:`Symfony convention ` to make parameters + easier to read. Parameters are just flat key-value elements, they can't be + inherited. + .. note:: You can only set a parameter before the container is compiled. To learn @@ -190,9 +197,9 @@ making the class of a service a parameter: Array Parameters ---------------- -Parameters do not need to be flat strings, they can also be arrays. For the XML -format, you need to use the ``type="collection"`` attribute for all parameters that are -arrays. +Parameters do not need to be flat strings, they can also contain array values. +For the XML format, you need to use the ``type="collection"`` attribute for +all parameters that are arrays. .. configuration-block:: diff --git a/contributing/code/standards.rst b/contributing/code/standards.rst index 1d512b3855e..aadcb34ef90 100644 --- a/contributing/code/standards.rst +++ b/contributing/code/standards.rst @@ -133,6 +133,8 @@ Naming Conventions * Don't forget to look at the more verbose :doc:`conventions` document for more subjective naming considerations. +.. _service-naming-conventions: + Service Naming Conventions ~~~~~~~~~~~~~~~~~~~~~~~~~~ From b97e79c7772ddd41173f26a07406f7f084cb1c32 Mon Sep 17 00:00:00 2001 From: Slava Fomin Date: Sun, 2 Feb 2014 18:51:34 +0300 Subject: [PATCH 02/32] Added tip for Entity Listeners --- cookbook/doctrine/event_listeners_subscribers.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cookbook/doctrine/event_listeners_subscribers.rst b/cookbook/doctrine/event_listeners_subscribers.rst index fb1274a38a7..4961ae00aa8 100644 --- a/cookbook/doctrine/event_listeners_subscribers.rst +++ b/cookbook/doctrine/event_listeners_subscribers.rst @@ -154,6 +154,12 @@ specific type of entity (e.g. a ``Product`` entity but not a ``BlogPost`` entity), you should check for the entity's class type in your method (as shown above). +.. tip:: + + Starting from version 2.4 Doctrine has a feature called `Entity Listeners`_ + which is a lifecycle listener class used for an entity. You can read about + it in Doctrine documentation. + Creating the Subscriber Class ----------------------------- @@ -211,3 +217,4 @@ interface and have an event method for each event it subscribes to:: For a full reference, see chapter `The Event System`_ in the Doctrine documentation. .. _`The Event System`: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html +.. _`Entity Listeners`: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html#entity-listeners From b53e1787c418f7176b20fba1a76d1c7fd570634d Mon Sep 17 00:00:00 2001 From: Slava Fomin Date: Mon, 3 Feb 2014 13:27:50 +0300 Subject: [PATCH 03/32] Fixed typo --- cookbook/doctrine/event_listeners_subscribers.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cookbook/doctrine/event_listeners_subscribers.rst b/cookbook/doctrine/event_listeners_subscribers.rst index 4961ae00aa8..bd045aab921 100644 --- a/cookbook/doctrine/event_listeners_subscribers.rst +++ b/cookbook/doctrine/event_listeners_subscribers.rst @@ -158,7 +158,7 @@ entity), you should check for the entity's class type in your method Starting from version 2.4 Doctrine has a feature called `Entity Listeners`_ which is a lifecycle listener class used for an entity. You can read about - it in Doctrine documentation. + it in the Doctrine documentation. Creating the Subscriber Class ----------------------------- From ef4014d39840f55bd4c353613de5f2d6534e08f5 Mon Sep 17 00:00:00 2001 From: yositani Date: Tue, 4 Feb 2014 01:57:56 +0900 Subject: [PATCH 04/32] fix form type. --- reference/forms/types/timezone.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reference/forms/types/timezone.rst b/reference/forms/types/timezone.rst index ef4769e1cff..6867e89a8e0 100644 --- a/reference/forms/types/timezone.rst +++ b/reference/forms/types/timezone.rst @@ -12,7 +12,7 @@ or ``Europe/Istanbul``. Unlike the ``choice`` type, you don't need to specify a ``choices`` or ``choice_list`` option as the field type automatically uses a large list -of locales. You *can* specify either of these options manually, but then +of timezones. You *can* specify either of these options manually, but then you should just use the ``choice`` type directly. +-------------+------------------------------------------------------------------------+ From eb7594c308e6d69b247bdcf724c724863f5ffdcb Mon Sep 17 00:00:00 2001 From: Colin O'Dell Date: Wed, 5 Feb 2014 17:24:52 -0500 Subject: [PATCH 05/32] Example of getting entity managers directly from the container The documentation didn't provide examples of how to obtain the entity managers directly from the DI container. This is useful when needing to inject the em into other services. The ems are added to the container using the service id `doctrine.orm.%s_entity_manager`, where `%s` is the em's name. This is done by `\Doctrine\Bundle\DoctrineBundle\DependencyInjection\DoctrineExtension::loadOrmEntityManager()` (see: https://github.com/doctrine/DoctrineBundle/blob/v1.2.0/DependencyInjection/DoctrineExtension.php#L347) --- cookbook/doctrine/multiple_entity_managers.rst | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/cookbook/doctrine/multiple_entity_managers.rst b/cookbook/doctrine/multiple_entity_managers.rst index 40f54255ea9..e41301f00f2 100644 --- a/cookbook/doctrine/multiple_entity_managers.rst +++ b/cookbook/doctrine/multiple_entity_managers.rst @@ -187,11 +187,14 @@ the default entity manager (i.e. ``default``) is returned:: { public function indexAction() { - // both return the "default" em + // All three return the "default" entity manager $em = $this->get('doctrine')->getManager(); $em = $this->get('doctrine')->getManager('default'); + $em = $this->get('doctrine.orm.default_entity_manager'); - $customerEm = $this->get('doctrine')->getManager('customer'); + // Both of these return the "customer" entity manager + $customerEm = $this->get('doctrine')->getManager('customer'); + $customerEm = $this->get('doctrine.orm.customer_entity_manager'); } } From ed5eab753654a8b06278adfb3aeb7cfc351a6a31 Mon Sep 17 00:00:00 2001 From: Colin O'Dell Date: Wed, 5 Feb 2014 17:44:05 -0500 Subject: [PATCH 06/32] Contributions should be based off 2.3 or higher Per the documentation (http://symfony.com/doc/current/contributing/documentation/overview.html#contributing), the base branch should be 2.3, not 2.2. --- README.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.markdown b/README.markdown index 56f267d7ea3..9e17f5d4b7f 100644 --- a/README.markdown +++ b/README.markdown @@ -7,9 +7,9 @@ Contributing ------------ >**Note** ->Unless you're documenting a feature that's new to a specific version of Symfony ->(e.g. Symfony 2.3), all pull requests must be based off of the **2.2** branch, ->**not** the master or 2.3 branch. +>Unless you're documenting a feature that was introduced *after* Symfony 2.3 +>(e.g. in Symfony 2.4), all pull requests must be based off of the **2.3** branch, +>**not** the master or older branches. We love contributors! For more information on how you can contribute to the Symfony documentation, please read From 95b4d401698a2056bd60cbdcee9ddc34ef4276db Mon Sep 17 00:00:00 2001 From: atmosf3ar Date: Thu, 6 Feb 2014 15:05:56 +0100 Subject: [PATCH 07/32] Update forms.rst Hi there, I thought it would be nice to specify that you can set a label to false to disable it. I needed it for a project, couldn't find it in the doc, and had to search through a couple of stackoverflow posts to find the solution. --- book/forms.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/forms.rst b/book/forms.rst index 368a505b8a7..135effc5106 100644 --- a/book/forms.rst +++ b/book/forms.rst @@ -645,7 +645,7 @@ the documentation for each type. )) The label for a field can also be set in the template rendering the - form, see below. + form, see below. If you don't need a label associated to your input, you can disable it by setting it's value to 'false'. .. index:: single: Forms; Field type guessing From 3116b395a6e3917bc503c6c6fb8ac3e3ac1c8cca Mon Sep 17 00:00:00 2001 From: atmosf3ar Date: Thu, 6 Feb 2014 15:25:35 +0100 Subject: [PATCH 08/32] Update forms.rst not sure what you meant about the wrapping, I applied a soft wrap after "to your input,". Let me know how that looks --- book/forms.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/forms.rst b/book/forms.rst index 135effc5106..d23840804a3 100644 --- a/book/forms.rst +++ b/book/forms.rst @@ -645,7 +645,7 @@ the documentation for each type. )) The label for a field can also be set in the template rendering the - form, see below. If you don't need a label associated to your input, you can disable it by setting it's value to 'false'. + form, see below. If you don't need a label associated to your input, you can disable it by setting its value to false. .. index:: single: Forms; Field type guessing From fb5f12d5bcb1e1b734d500425a4644a2f97081ee Mon Sep 17 00:00:00 2001 From: atmosf3ar Date: Thu, 6 Feb 2014 16:00:44 +0100 Subject: [PATCH 09/32] Update forms.rst --- book/forms.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/book/forms.rst b/book/forms.rst index d23840804a3..08acb2a8e4d 100644 --- a/book/forms.rst +++ b/book/forms.rst @@ -645,7 +645,8 @@ the documentation for each type. )) The label for a field can also be set in the template rendering the - form, see below. If you don't need a label associated to your input, you can disable it by setting its value to false. + form, see below. If you don't need a label associated to your input, + you can disable it by setting its value to ``false``. .. index:: single: Forms; Field type guessing From 7c361e1eb1628ee675a74d9f82f57677fe00b808 Mon Sep 17 00:00:00 2001 From: Andrew M Date: Sat, 8 Feb 2014 09:53:45 +0200 Subject: [PATCH 10/32] Fix typos --- book/doctrine.rst | 2 +- components/http_foundation/sessions.rst | 2 +- components/http_kernel/introduction.rst | 2 +- components/intl.rst | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/book/doctrine.rst b/book/doctrine.rst index 026a3b4f977..68fc9faeb0b 100644 --- a/book/doctrine.rst +++ b/book/doctrine.rst @@ -622,7 +622,7 @@ Once you have your repository, you have access to all sorts of helpful methods:: You can also take advantage of the useful ``findBy`` and ``findOneBy`` methods to easily fetch objects based on multiple conditions:: - // query for one product matching be name and price + // query for one product matching by name and price $product = $repository->findOneBy(array('name' => 'foo', 'price' => 19.99)); // query for all products matching the name, ordered by price diff --git a/components/http_foundation/sessions.rst b/components/http_foundation/sessions.rst index 4a1bf6484bb..19111fa644c 100644 --- a/components/http_foundation/sessions.rst +++ b/components/http_foundation/sessions.rst @@ -254,7 +254,7 @@ has a simple API Adds a flash message to the stack of specified type; * :method:`Symfony\\Component\\HttpFoundation\\Session\\Flash\\FlashBagInterface::set`: - Sets flashes by type; This method conveniently takes both singles messages as + Sets flashes by type; This method conveniently takes both single messages as a ``string`` or multiple messages in an ``array``. * :method:`Symfony\\Component\\HttpFoundation\\Session\\Flash\\FlashBagInterface::get`: diff --git a/components/http_kernel/introduction.rst b/components/http_kernel/introduction.rst index d9e56df99e4..eed9e3ab72e 100644 --- a/components/http_kernel/introduction.rst +++ b/components/http_kernel/introduction.rst @@ -645,7 +645,7 @@ your controller). :align: center To execute a sub request, use ``HttpKernel::handle``, but change the second -arguments as follows:: +argument as follows:: use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\HttpKernelInterface; diff --git a/components/intl.rst b/components/intl.rst index e65ba77dbf5..34ed07448e7 100644 --- a/components/intl.rst +++ b/components/intl.rst @@ -78,7 +78,7 @@ code:: These versions are important when you deploy your application to a **server with a lower ICU version** than your development machines, because deployment will - fail if + fail if: * the development machines are compiled with ICU 4.4 or higher, but the server is compiled with a lower ICU version than 4.4; From 400a0c0639b9050de9dcb510fcd0341ac00da407 Mon Sep 17 00:00:00 2001 From: Andrew M Date: Sat, 8 Feb 2014 10:45:45 +0200 Subject: [PATCH 11/32] Minimize horizontal scrolling in code block to improve readability --- components/http_foundation/introduction.rst | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/components/http_foundation/introduction.rst b/components/http_foundation/introduction.rst index e0371822d19..6e80801df9a 100644 --- a/components/http_foundation/introduction.rst +++ b/components/http_foundation/introduction.rst @@ -289,8 +289,24 @@ PHP callable that is able to create an instance of your ``Request`` class:: use Symfony\Component\HttpFoundation\Request; - Request::setFactory(function (array $query = array(), array $request = array(), array $attributes = array(), array $cookies = array(), array $files = array(), array $server = array(), $content = null) { - return SpecialRequest::create($query, $request, $attributes, $cookies, $files, $server, $content); + Request::setFactory(function ( + array $query = array(), + array $request = array(), + array $attributes = array(), + array $cookies = array(), + array $files = array(), + array $server = array(), + $content = null + ) { + return SpecialRequest::create( + $query, + $request, + $attributes, + $cookies, + $files, + $server, + $content + ); }); $request = Request::createFromGlobals(); From d3839cef98ce1ba9af57ff3aedc1c684b27ce9f5 Mon Sep 17 00:00:00 2001 From: Andrew M Date: Sat, 8 Feb 2014 10:50:43 +0200 Subject: [PATCH 12/32] Wrap variables in {} for safer interpolation --- components/http_foundation/sessions.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/http_foundation/sessions.rst b/components/http_foundation/sessions.rst index 4a1bf6484bb..9daaaedbad6 100644 --- a/components/http_foundation/sessions.rst +++ b/components/http_foundation/sessions.rst @@ -28,7 +28,7 @@ Quick example:: // retrieve messages foreach ($session->getFlashBag()->get('notice', array()) as $message) { - echo "
$message
"; + echo "
{$message}
"; } .. note:: @@ -308,18 +308,18 @@ Simple, display one type of message:: // display warnings foreach ($session->getFlashBag()->get('warning', array()) as $message) { - echo "
$message
"; + echo "
{$message}
"; } // display errors foreach ($session->getFlashBag()->get('error', array()) as $message) { - echo "
$message
"; + echo "
{$message}
"; } Compact method to process display all flashes at once:: foreach ($session->getFlashBag()->all() as $type => $messages) { foreach ($messages as $message) { - echo "
$message
\n"; + echo "
{$message}
\n"; } } From 31a0b07c829e5be2d8a115d50f7e639337ab6c5c Mon Sep 17 00:00:00 2001 From: Andrew M Date: Sat, 8 Feb 2014 10:55:25 +0200 Subject: [PATCH 13/32] Fix PSR error --- book/doctrine.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/book/doctrine.rst b/book/doctrine.rst index 026a3b4f977..71f8916ad2c 100644 --- a/book/doctrine.rst +++ b/book/doctrine.rst @@ -1253,8 +1253,8 @@ following method to the ``ProductRepository`` class:: public function findOneByIdJoinedToCategory($id) { $query = $this->getEntityManager() - ->createQuery(' - SELECT p, c FROM AcmeStoreBundle:Product p + ->createQuery( + 'SELECT p, c FROM AcmeStoreBundle:Product p JOIN p.category c WHERE p.id = :id' )->setParameter('id', $id); From a6c68a9cd159b7bce47645a9230f2147ffacb519 Mon Sep 17 00:00:00 2001 From: WouterJ Date: Sat, 8 Feb 2014 20:01:02 +0100 Subject: [PATCH 14/32] Added CHANGELOG for 2.3 --- changelog.rst | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 changelog.rst diff --git a/changelog.rst b/changelog.rst new file mode 100644 index 00000000000..6a6a1cf8e68 --- /dev/null +++ b/changelog.rst @@ -0,0 +1,66 @@ +.. index:: + single: CHANGELOG + +The Documentation Changelog +=========================== + +This documentation is under current development: All new features needs new +documentation and bugs/typos get fixed. This article holds all important +changes of the documentation. + +.. tip:: + + Do you also want to participate in the Symfony Documentation? Take a look + at the ":doc:`/contributing/documentation`" article. + +January, 2014 +------------- + +New Documentation +~~~~~~~~~~~~~~~~~ + +No changes + +Fixed Documentation +~~~~~~~~~~~~~~~~~~~ + +- `e385d28 `_ #3503 file extension correction xfliff to xliff (nixilla) +- `7fe0de3 `_ #3475 Fixed doc for framework.session.cookie_lifetime refrence. (tyomo4ka) +- `8155e4c `_ #3473 Update proxy_examples.rst (AZielinski) +- `c205bc6 `_ #3468 enclose YAML string with double quotes to fix syntax highlighting (xabbuh) +- `89963cc `_ #3463 Fix typos in cookbook/testing/database (ifdattic) +- `e0a52ec `_ #3460 remove confusing outdated note on interactive rebasing (xabbuh) +- `6831b13 `_ #3455 [Contributing][Code] fix indentation so that the text is rendered properly (xabbuh) +- `ea5816f `_ #3433 [WIP][Reference][Form Types] Update "radio" form type (bicpi) +- `42c80d1 `_ #3448 Overridden tweak (weaverryan) +- `d9d7c58 `_ #3444 Fix issue #3442 (ifdattic) +- `9e2e64b `_ #3427 Removed code references to Symfony Standard Distribution (danielcsgomes) +- `26b8146 `_ #3415 [#3334] the data_class option was not introduced in 2.4 (xabbuh) +- `0b2a491 `_ #3414 add missing code-block directive (xabbuh) +- `4988118 `_ #3432 [Reference][Form Types] Add "max_length" option in form type (nykopol) +- `26a7b1b `_ #3423 [Session Configuration] add clarifying notes on session save handler proxies (cordoval) + +Minor Documentation Changes +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- `1131247 `_ #3508 Add 'in XML' for additional clarity (ifdattic) +- `a650b93 `_ #3506 Nykopol overriden options (weaverryan) +- `ab10035 `_ #3505 replace Akamaï with Akamai (xabbuh) +- `7f56c20 `_ #3501 [Security] Fix markup (tyx) +- `80a90ba `_ #3500 Minimize horizontal scrolling in code blocks (improve readability) (ifdattic) +- `e5bc4ea `_ #3498 Remove second empty data (xabbuh) +- `d084d87 `_ #3485 [Cookbook][Assetic] Fix "javascripts" tag name typo (bicpi) +- `3250aba `_ #3481 Fix code block (minimise horizontal scrolling), typo in yaml (ifdattic) +- `f285d93 `_ #3451 some language tweaks (AE, third-person perspective) (xabbuh) +- `2b7e0f6 `_ #3497 Fix highlighting (WouterJ) +- `a535ae0 `_ #3471 Fixed `````versionadded````` inconsistencies in Symfony 2.3 (danielcsgomes) +- `f077a8e `_ #3465 change wording in versionadded example to be consistent with what we use... (xabbuh) +- `f9f7548 `_ #3462 Replace ... with etc (ifdattic) +- `65efcc4 `_ #3445 [Reference][Form Types] Add missing (but existing) options to "form" type (bicpi) +- `1d1b91d `_ #3431 [Config] add cautionary note on ini file loader limitation (cordoval) +- `f2eaf9b `_ #3419 doctrine file upload example uses dir -- caution added (cordoval) +- `72b53ad `_ #3404 [#3276] Trying to further clarify the session storage directory details (weaverryan) +- `67b7bbd `_ #3413 [Cookbook][Bundles] improve explanation of code block for bundle removal (cordoval) +- `7c5a914 `_ #3369 Indicate that Group Sequence Providers can use YAML (karptonite) +- `1e0311e `_ #3416 add empty_data option where required option is used (xabbuh) +- `2be3f52 `_ #3422 [Cookbook][Custom Authentication Provider] add a note of warning for when forbidding anonymous users (cordoval) From 0f7a189c757d5d82c20f38306685115de6a81254 Mon Sep 17 00:00:00 2001 From: Andrew M Date: Sat, 8 Feb 2014 22:31:23 +0200 Subject: [PATCH 15/32] Change interpolation to concatenation --- components/http_foundation/sessions.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/http_foundation/sessions.rst b/components/http_foundation/sessions.rst index 9daaaedbad6..815b0222dd7 100644 --- a/components/http_foundation/sessions.rst +++ b/components/http_foundation/sessions.rst @@ -28,7 +28,7 @@ Quick example:: // retrieve messages foreach ($session->getFlashBag()->get('notice', array()) as $message) { - echo "
{$message}
"; + echo "
".$message."
"; } .. note:: @@ -308,18 +308,18 @@ Simple, display one type of message:: // display warnings foreach ($session->getFlashBag()->get('warning', array()) as $message) { - echo "
{$message}
"; + echo "
".$message."
"; } // display errors foreach ($session->getFlashBag()->get('error', array()) as $message) { - echo "
{$message}
"; + echo "
".$message."
"; } Compact method to process display all flashes at once:: foreach ($session->getFlashBag()->all() as $type => $messages) { foreach ($messages as $message) { - echo "
{$message}
\n"; + echo "
".$message."
"; } } From 4046476eed0207f4128e4ec21cd1b26d5312951e Mon Sep 17 00:00:00 2001 From: Andrew M Date: Sun, 9 Feb 2014 13:09:38 +0200 Subject: [PATCH 16/32] Replace double quotes with single quotes --- components/http_foundation/sessions.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/http_foundation/sessions.rst b/components/http_foundation/sessions.rst index 815b0222dd7..508a202c41a 100644 --- a/components/http_foundation/sessions.rst +++ b/components/http_foundation/sessions.rst @@ -28,7 +28,7 @@ Quick example:: // retrieve messages foreach ($session->getFlashBag()->get('notice', array()) as $message) { - echo "
".$message."
"; + echo '
'.$message.'
'; } .. note:: @@ -308,18 +308,18 @@ Simple, display one type of message:: // display warnings foreach ($session->getFlashBag()->get('warning', array()) as $message) { - echo "
".$message."
"; + echo '
'.$message.'
'; } // display errors foreach ($session->getFlashBag()->get('error', array()) as $message) { - echo "
".$message."
"; + echo '
'.$message.'
'; } Compact method to process display all flashes at once:: foreach ($session->getFlashBag()->all() as $type => $messages) { foreach ($messages as $message) { - echo "
".$message."
"; + echo '
'.$message.'
'; } } From efaad48422235654078f8151a6a7add16830f90d Mon Sep 17 00:00:00 2001 From: Ryan Weaver Date: Sun, 19 Jan 2014 21:58:53 -0600 Subject: [PATCH 17/32] Fixing typo - thanks to @xabbuh --- cookbook/bundles/remove.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cookbook/bundles/remove.rst b/cookbook/bundles/remove.rst index af1dfd774b8..ce36fae32ab 100644 --- a/cookbook/bundles/remove.rst +++ b/cookbook/bundles/remove.rst @@ -95,9 +95,9 @@ rely on the bundle you are about to remove. .. tip:: - If one bundle relies on another, in most it means that it uses some services - from the bundle. Searching for the bundle alias string may help you spot - them (e.g. ``acme_demo`` for bundles depending on AcmeDemoBundle). + If one bundle relies on another, in most cases it means that it uses + some services from the bundle. Searching for the bundle alias string may + help you spot them (e.g. ``acme_demo`` for bundles depending on AcmeDemoBundle). .. tip:: From 443677343f445c6754ee17b854409c5153a1db88 Mon Sep 17 00:00:00 2001 From: Colin O'Dell Date: Mon, 3 Feb 2014 13:12:26 -0500 Subject: [PATCH 18/32] Add missing variable assignment Line 41 made use of $crawler which wasn't defined. --- cookbook/testing/simulating_authentication.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cookbook/testing/simulating_authentication.rst b/cookbook/testing/simulating_authentication.rst index b67365398b3..56168f09552 100644 --- a/cookbook/testing/simulating_authentication.rst +++ b/cookbook/testing/simulating_authentication.rst @@ -35,7 +35,7 @@ with a request. The following example demonstrates this technique:: { $this->logIn(); - $this->client->request('GET', '/demo/secured/hello/Fabien'); + $crawler = $this->client->request('GET', '/demo/secured/hello/Fabien'); $this->assertTrue($this->client->getResponse()->isSuccessful()); $this->assertGreaterThan(0, $crawler->filter('html:contains("Hello Fabien")')->count()); From 65649aa712cee26d9b8a99b44313def11e42ab71 Mon Sep 17 00:00:00 2001 From: Slava Fomin Date: Tue, 11 Feb 2014 08:39:44 +0300 Subject: [PATCH 19/32] Update event_listeners_subscribers.rst --- cookbook/doctrine/event_listeners_subscribers.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cookbook/doctrine/event_listeners_subscribers.rst b/cookbook/doctrine/event_listeners_subscribers.rst index bd045aab921..bd1f322d0b3 100644 --- a/cookbook/doctrine/event_listeners_subscribers.rst +++ b/cookbook/doctrine/event_listeners_subscribers.rst @@ -156,9 +156,9 @@ entity), you should check for the entity's class type in your method .. tip:: - Starting from version 2.4 Doctrine has a feature called `Entity Listeners`_ - which is a lifecycle listener class used for an entity. You can read about - it in the Doctrine documentation. + In Doctrine 2.4, a feature called Entity Listeners was introduced. + It is a lifecycle listener class used for an entity. You can read + about it in `the Doctrine Documentation`_. Creating the Subscriber Class ----------------------------- @@ -217,4 +217,4 @@ interface and have an event method for each event it subscribes to:: For a full reference, see chapter `The Event System`_ in the Doctrine documentation. .. _`The Event System`: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html -.. _`Entity Listeners`: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html#entity-listeners +.. _`the Doctrine Documentation`: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html#entity-listeners From aaddfcd97a9918d5570c59fe59fecda2ddc72a59 Mon Sep 17 00:00:00 2001 From: Wouter J Date: Tue, 11 Feb 2014 07:57:39 +0100 Subject: [PATCH 20/32] Applied comment --- components/dependency_injection/parameters.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/dependency_injection/parameters.rst b/components/dependency_injection/parameters.rst index fc78b36ad37..939991adb7e 100644 --- a/components/dependency_injection/parameters.rst +++ b/components/dependency_injection/parameters.rst @@ -30,7 +30,7 @@ and set a parameter in the container with:: The used ``.`` notation is just a :ref:`Symfony convention ` to make parameters easier to read. Parameters are just flat key-value elements, they can't be - inherited. + organized into a nested array .. note:: From b8e1e99c136d6fba493cb9743b619bc1f7626ca7 Mon Sep 17 00:00:00 2001 From: Roger Llopart Pla Date: Wed, 5 Feb 2014 12:06:56 +0100 Subject: [PATCH 21/32] Update generic_event.rst The $event['data'] field was not set, thus it wouldn't be modified. Also, the example already had a lowercase string. Uppercased 1 letter. --- components/event_dispatcher/generic_event.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/event_dispatcher/generic_event.rst b/components/event_dispatcher/generic_event.rst index 9018c145577..3be0b9bb876 100644 --- a/components/event_dispatcher/generic_event.rst +++ b/components/event_dispatcher/generic_event.rst @@ -93,7 +93,7 @@ Filtering data:: use Symfony\Component\EventDispatcher\GenericEvent; - $event = new GenericEvent($subject, array('data' => 'foo')); + $event = new GenericEvent($subject, array('data' => 'Foo')); $dispatcher->dispatch('foo', $event); echo $event['data']; @@ -102,6 +102,6 @@ Filtering data:: { public function filter(GenericEvent $event) { - strtolower($event['data']); + $event['data'] = strtolower($event['data']); } } From e702b346b470ab795162c0344f45470e42b524ca Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Wed, 5 Feb 2014 17:26:24 +0100 Subject: [PATCH 22/32] fix referenced documents names --- reference/forms/types/collection.rst | 2 +- reference/forms/types/options/checkbox_empty_data.rst.inc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/reference/forms/types/collection.rst b/reference/forms/types/collection.rst index 1dfcc037f35..9f442d2fda8 100644 --- a/reference/forms/types/collection.rst +++ b/reference/forms/types/collection.rst @@ -365,4 +365,4 @@ error_bubbling .. include:: /reference/forms/types/options/mapped.rst.inc -.. include:: /reference/forms/type/options/cascade_validation.rst.inc +.. include:: /reference/forms/types/options/cascade_validation.rst.inc diff --git a/reference/forms/types/options/checkbox_empty_data.rst.inc b/reference/forms/types/options/checkbox_empty_data.rst.inc index 8143ad364ce..d7a09ba3b7b 100644 --- a/reference/forms/types/options/checkbox_empty_data.rst.inc +++ b/reference/forms/types/options/checkbox_empty_data.rst.inc @@ -6,4 +6,4 @@ empty_data This option determines what value the field will return when the ``empty_value`` choice is selected. In checkbox, the value of ``empty_data`` is overriden by the value returned by -the data transformer (see :doc:`/cookbook/form/data_transformers.rst`). +the data transformer (see :doc:`/cookbook/form/data_transformers`). From 3e0d1f48989a19c9bf6249756afacfd05aa691c2 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Thu, 13 Feb 2014 18:20:04 +0100 Subject: [PATCH 23/32] remove empty_data from the list of inherited options, it's documented in the overriden options section --- reference/forms/types/checkbox.rst | 2 -- 1 file changed, 2 deletions(-) diff --git a/reference/forms/types/checkbox.rst b/reference/forms/types/checkbox.rst index aeefb915ccf..e39c393dae7 100644 --- a/reference/forms/types/checkbox.rst +++ b/reference/forms/types/checkbox.rst @@ -60,8 +60,6 @@ These options inherit from the :doc:`form ` type: .. include:: /reference/forms/types/options/data.rst.inc -.. include:: /reference/forms/types/options/empty_data.rst.inc - .. include:: /reference/forms/types/options/required.rst.inc .. include:: /reference/forms/types/options/label.rst.inc From 892fd3561dae98ff13912165dc8b178448133106 Mon Sep 17 00:00:00 2001 From: Ryan Weaver Date: Sun, 16 Feb 2014 12:45:29 -0600 Subject: [PATCH 24/32] Quick note so that we don't forget to update the branch version stuff in the README file - see #3546 --- contributing/documentation/overview.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributing/documentation/overview.rst b/contributing/documentation/overview.rst index 695960bad64..1efc8e9fe15 100644 --- a/contributing/documentation/overview.rst +++ b/contributing/documentation/overview.rst @@ -202,7 +202,7 @@ For this example, suppose version 2.1 has just reached its end of maintenance: * All branches still under maintenance (e.g. 2.2 and higher) are updated to reflect that pull requests should start from the now-oldest maintained - version (e.g. 2.2). + version (e.g. 2.2) - including the details in the README file. * Remove all ``versionadded`` directives - and any other notes related to features changing or being new - for the version (e.g. 2.1) from the master branch. From 934c0bb63d2634e66abf810925c7f8acca8893a3 Mon Sep 17 00:00:00 2001 From: Anton Babenko Date: Thu, 6 Feb 2014 21:56:51 +0100 Subject: [PATCH 25/32] Fixed createPropertyAccessorBuilder usage --- components/property_access/introduction.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/property_access/introduction.rst b/components/property_access/introduction.rst index bc9e6d14cb3..1498c925016 100644 --- a/components/property_access/introduction.rst +++ b/components/property_access/introduction.rst @@ -350,7 +350,7 @@ configured to enable extra features. To do that you could use the :class:`Symfony\\Component\\PropertyAccess\\PropertyAccessorBuilder`:: // ... - $accessorBuilder = PropertyAccess::getPropertyAccessorBuilder(); + $accessorBuilder = PropertyAccess::createPropertyAccessorBuilder(); // Enable magic __call $accessorBuilder->enableMagicCall(); @@ -365,7 +365,7 @@ configured to enable extra features. To do that you could use the $accessor = $accessorBuilder->getPropertyAccessor(); // Or all in one - $accessor = PropertyAccess::getPropertyAccessorBuilder() + $accessor = PropertyAccess::createPropertyAccessorBuilder() ->enableMagicCall() ->getPropertyAccessor(); From 5f696f567defc348d7fc509c92d58c8c57e46a17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dawid=20Kr=C3=B3lak?= Date: Fri, 7 Feb 2014 13:32:23 +0100 Subject: [PATCH 26/32] Update introduction.rst Found that use Symfony\Component\HttpKernel\EventListener\RouterListener; is missing in full working example. --- components/http_kernel/introduction.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/components/http_kernel/introduction.rst b/components/http_kernel/introduction.rst index d9e56df99e4..40bb2bddd06 100644 --- a/components/http_kernel/introduction.rst +++ b/components/http_kernel/introduction.rst @@ -601,6 +601,7 @@ a built-in ControllerResolver that can be used to create a working example:: use Symfony\Component\HttpKernel\HttpKernel; use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\HttpKernel\Controller\ControllerResolver; + use Symfony\Component\HttpKernel\EventListener\RouterListener; use Symfony\Component\Routing\RouteCollection; use Symfony\Component\Routing\Route; use Symfony\Component\Routing\Matcher\UrlMatcher; From 66c4d77fcaa1f8ef381e9f9e9ed5fd06f4bcbbc4 Mon Sep 17 00:00:00 2001 From: Eugene Leonovich Date: Fri, 7 Feb 2014 14:55:14 +0100 Subject: [PATCH 27/32] Fix sample code --- cookbook/form/dynamic_form_modification.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cookbook/form/dynamic_form_modification.rst b/cookbook/form/dynamic_form_modification.rst index c5255707a01..14ad9f02756 100644 --- a/cookbook/form/dynamic_form_modification.rst +++ b/cookbook/form/dynamic_form_modification.rst @@ -123,7 +123,7 @@ the event listener might look like the following:: // check if the Product object is "new" // If no data is passed to the form, the data is "null". // This should be considered a new "Product" - if (!$product || null !== $product->getId()) { + if (!$product || null === $product->getId()) { $form->add('name', 'text'); } }); @@ -212,7 +212,7 @@ class:: $product = $event->getData(); $form = $event->getForm(); - if (!$product || null !== $product->getId()) { + if (!$product || null === $product->getId()) { $form->add('name', 'text'); } } From 401737bcb95d38e9be5883d0588c88f1926485a3 Mon Sep 17 00:00:00 2001 From: Wouter J Date: Sun, 16 Feb 2014 21:17:49 +0100 Subject: [PATCH 28/32] Applied comments from @xabbuh --- changelog.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/changelog.rst b/changelog.rst index 6a6a1cf8e68..5d29f89b0c2 100644 --- a/changelog.rst +++ b/changelog.rst @@ -1,17 +1,17 @@ .. index:: - single: CHANGELOG + single: CHANGELOG The Documentation Changelog =========================== -This documentation is under current development: All new features needs new -documentation and bugs/typos get fixed. This article holds all important -changes of the documentation. +This documentation is always changing: All new features need new documentation +and bugs/typos get fixed. This article holds all important changes of the +documentation. .. tip:: - Do you also want to participate in the Symfony Documentation? Take a look - at the ":doc:`/contributing/documentation`" article. + Do you also want to participate in the Symfony Documentation? Take a look + at the ":doc:`/contributing/documentation`" article. January, 2014 ------------- From 473969fdaad2b45b7c3e6a766717456fb42221fe Mon Sep 17 00:00:00 2001 From: Andrew M Date: Sat, 8 Feb 2014 10:26:01 +0200 Subject: [PATCH 29/32] Minimize horizontal scrolling in code blocks to improve readability --- book/controller.rst | 8 ++++-- book/doctrine.rst | 27 ++++++++++++--------- components/form/introduction.rst | 13 +++++++--- components/http_foundation/introduction.rst | 13 +++++++--- components/http_kernel/introduction.rst | 4 ++- components/intl.rst | 7 +++++- 6 files changed, 50 insertions(+), 22 deletions(-) diff --git a/book/controller.rst b/book/controller.rst index 661d7838dab..7692b7e59ae 100644 --- a/book/controller.rst +++ b/book/controller.rst @@ -508,7 +508,10 @@ value to each variable. $subRequest = $request->duplicate(array(), null, $path); $httpKernel = $this->container->get('http_kernel'); - $response = $httpKernel->handle($subRequest, HttpKernelInterface::SUB_REQUEST); + $response = $httpKernel->handle( + $subRequest, + HttpKernelInterface::SUB_REQUEST + ); .. index:: single: Controller; Rendering templates @@ -574,7 +577,8 @@ The Symfony templating engine is explained in great detail in the 'AcmeHelloBundle:Hello/Greetings:index.html.twig', array('name' => $name) ); - // index.html.twig found in Resources/views/Hello/Greetings is rendered. + // index.html.twig found in Resources/views/Hello/Greetings + // is rendered. .. index:: single: Controller; Accessing services diff --git a/book/doctrine.rst b/book/doctrine.rst index fbed31f7b31..b4ffafdbfa7 100644 --- a/book/doctrine.rst +++ b/book/doctrine.rst @@ -622,8 +622,10 @@ Once you have your repository, you have access to all sorts of helpful methods:: You can also take advantage of the useful ``findBy`` and ``findOneBy`` methods to easily fetch objects based on multiple conditions:: - // query for one product matching by name and price - $product = $repository->findOneBy(array('name' => 'foo', 'price' => 19.99)); + // query for one product matching be name and price + $product = $repository->findOneBy( + array('name' => 'foo', 'price' => 19.99) + ); // query for all products matching the name, ordered by price $products = $repository->findBy( @@ -1144,7 +1146,8 @@ Now you can see this new code in action! Imagine you're inside a controller:: $em->flush(); return new Response( - 'Created product id: '.$product->getId().' and category id: '.$category->getId() + 'Created product id: '.$product->getId() + .' and category id: '.$category->getId() ); } } @@ -1478,8 +1481,8 @@ and ``nullable``. Take a few examples: protected $name; /** - * A string field of length 150 that persists to an "email_address" column - * and has a unique index. + * A string field of length 150 that persists to an + * "email_address" column and has a unique index. * * @ORM\Column(name="email_address", unique=true, length=150) */ @@ -1489,13 +1492,14 @@ and ``nullable``. Take a few examples: fields: # A string field length 255 that cannot be null - # (reflecting the default values for the "length" and *nullable* options) - # type attribute is necessary in YAML definitions + # (reflecting the default values for the "length" + # and *nullable* options) type attribute is + # necessary in YAML definitions name: type: string - # A string field of length 150 that persists to an "email_address" column - # and has a unique index. + # A string field of length 150 that persists to + # an "email_address" column and has a unique index. email: type: string column: email_address @@ -1506,8 +1510,9 @@ and ``nullable``. Take a few examples: setEnvironment($twig); // add the FormExtension to Twig - $twig->addExtension(new FormExtension(new TwigRenderer($formEngine, $csrfProvider))); + $twig->addExtension( + new FormExtension(new TwigRenderer($formEngine, $csrfProvider)) + ); // create your form factory as normal $formFactory = Forms::createFormFactoryBuilder() @@ -307,7 +311,8 @@ Your integration with the Validation component will look something like this:: $vendorDir = realpath(__DIR__ . '/../vendor'); $vendorFormDir = $vendorDir . '/symfony/form/Symfony/Component/Form'; - $vendorValidatorDir = $vendorDir . '/symfony/validator/Symfony/Component/Validator'; + $vendorValidatorDir = + $vendorDir . '/symfony/validator/Symfony/Component/Validator'; // create the validator - details will vary $validator = Validation::createValidator(); diff --git a/components/http_foundation/introduction.rst b/components/http_foundation/introduction.rst index 8497a09e530..a93ce40eb58 100644 --- a/components/http_foundation/introduction.rst +++ b/components/http_foundation/introduction.rst @@ -259,7 +259,8 @@ If you need to get full access to parsed data from ``Accept``, ``Accept-Language } // accepts items are sorted by descending quality - $accepts = AcceptHeader::fromString($request->headers->get('Accept'))->all(); + $accepts = AcceptHeader::fromString($request->headers->get('Accept')) + ->all(); Accessing other Data ~~~~~~~~~~~~~~~~~~~~ @@ -432,7 +433,10 @@ abstracts the hard work behind a simple API:: use Symfony\Component\HttpFoundation\ResponseHeaderBag; - $d = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, 'foo.pdf'); + $d = $response->headers->makeDisposition( + ResponseHeaderBag::DISPOSITION_ATTACHMENT, + 'foo.pdf' + ); $response->headers->set('Content-Disposition', $d); @@ -460,7 +464,10 @@ if it should:: You can still set the ``Content-Type`` of the sent file, or change its ``Content-Disposition``:: $response->headers->set('Content-Type', 'text/plain'); - $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, 'filename.txt'); + $response->setContentDisposition( + ResponseHeaderBag::DISPOSITION_ATTACHMENT, + 'filename.txt' + ); .. _component-http-foundation-json-response: diff --git a/components/http_kernel/introduction.rst b/components/http_kernel/introduction.rst index 5b2b180b0e8..7e40b393078 100644 --- a/components/http_kernel/introduction.rst +++ b/components/http_kernel/introduction.rst @@ -610,7 +610,9 @@ a built-in ControllerResolver that can be used to create a working example:: $routes = new RouteCollection(); $routes->add('hello', new Route('/hello/{name}', array( '_controller' => function (Request $request) { - return new Response(sprintf("Hello %s", $request->get('name'))); + return new Response( + sprintf("Hello %s", $request->get('name')) + ); } ) )); diff --git a/components/intl.rst b/components/intl.rst index 34ed07448e7..eff57495c25 100644 --- a/components/intl.rst +++ b/components/intl.rst @@ -282,7 +282,12 @@ multi-valued entries (arrays), the values of the more specific and the fallback locale will be merged. In order to suppress this behavior, the last parameter ``$fallback`` can be set to ``false``:: - echo $reader->readEntry('/path/to/bundle', 'en', array('Data', 'entry1'), false); + echo $reader->readEntry( + '/path/to/bundle', + 'en', + array('Data', 'entry1'), + false + ); Accessing ICU Data ------------------ From d9120045cc8d3c010e2f1b3cfff21840b95a4678 Mon Sep 17 00:00:00 2001 From: iqfoundry Date: Wed, 5 Feb 2014 17:42:38 -0600 Subject: [PATCH 30/32] Update acl.rst ACE is not defined in the scope of this document, hopefully this adds some clarity. --- cookbook/security/acl.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cookbook/security/acl.rst b/cookbook/security/acl.rst index bb3f20a299e..2ad2b062aef 100644 --- a/cookbook/security/acl.rst +++ b/cookbook/security/acl.rst @@ -90,6 +90,9 @@ Getting Started Coming back to the small example from the beginning, you can now implement ACL for it. +Once the ACL is created, you can grant access to objects by creating an Access Control Entity (ACE) to solidify the relationship between the entity and your user. + + Creating an ACL, and adding an ACE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From dd9326bc8c4fcc2b348dad93b0b25773f8daafca Mon Sep 17 00:00:00 2001 From: iqfoundry Date: Mon, 17 Feb 2014 15:06:16 -0600 Subject: [PATCH 31/32] Update acl.rst --- cookbook/security/acl.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cookbook/security/acl.rst b/cookbook/security/acl.rst index 2ad2b062aef..96f22a93d35 100644 --- a/cookbook/security/acl.rst +++ b/cookbook/security/acl.rst @@ -90,8 +90,9 @@ Getting Started Coming back to the small example from the beginning, you can now implement ACL for it. -Once the ACL is created, you can grant access to objects by creating an Access Control Entity (ACE) to solidify the relationship between the entity and your user. - +Once the ACL is created, you can grant access to objects by creating an +Access Control Entity (ACE) to solidify the relationship between the entity +and your user. Creating an ACL, and adding an ACE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From 8c6e2050373484ddd0c154815db7698cedae972a Mon Sep 17 00:00:00 2001 From: Paul Waring Date: Sat, 8 Feb 2014 19:44:58 +0000 Subject: [PATCH 32/32] Remove reference to copying parameters.yml to parameters.yml.dist as this file is now included in standard distribution, and renumber all following steps. --- cookbook/workflow/new_project_git.rst | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/cookbook/workflow/new_project_git.rst b/cookbook/workflow/new_project_git.rst index 598dc6e9554..f0403af21a1 100644 --- a/cookbook/workflow/new_project_git.rst +++ b/cookbook/workflow/new_project_git.rst @@ -44,31 +44,25 @@ git repository: in which case, you can find more information here: `Github .gitignore`_ This way you can exclude files/folders often used by your IDE for all of your projects. -4. Copy ``app/config/parameters.yml`` to ``app/config/parameters.yml.dist``. - The ``parameters.yml`` file is ignored by Git (see above) so that machine-specific - settings like database passwords aren't committed. By creating the ``parameters.yml.dist`` - file, new developers can quickly clone the project, copy this file to - ``parameters.yml``, customize it, and start developing. - -5. Initialize your Git repository: +4. Initialize your Git repository: .. code-block:: bash $ git init -6. Add all of the initial files to Git: +5. Add all of the initial files to Git: .. code-block:: bash $ git add . -7. Create an initial commit with your started project: +6. Create an initial commit with your started project: .. code-block:: bash $ git commit -m "Initial commit" -8. Finally, download all of the third-party vendor libraries by +7. Finally, download all of the third-party vendor libraries by executing Composer. For details, see :ref:`installation-updating-vendors`. At this point, you have a fully-functional Symfony2 project that's correctly