diff --git a/_build/maintainer_guide.rst b/_build/maintainer_guide.rst
index 70494bc4ab9..7fb3e69ece8 100644
--- a/_build/maintainer_guide.rst
+++ b/_build/maintainer_guide.rst
@@ -120,8 +120,8 @@ Step 2: Merge the pull request
Never use GitHub's web interface (or desktop clients) to merge PRs or to solve
merge conflicts. Always use the ``gh`` tool for anything related to merges.
-We require 2 approval votes from team members before merging a PR, except if
-it's a typo, a small change or an obvious error.
+We require two approval votes from team members before merging a PR, except if
+it's a typo, a small change or clearly an error.
If a PR contains lots of commits, there's no need to ask the contributor to
squash them. The ``gh`` tool does that automatically. The only exceptions are
diff --git a/best_practices/business-logic.rst b/best_practices/business-logic.rst
index aa99546fed2..dc49fbb2244 100644
--- a/best_practices/business-logic.rst
+++ b/best_practices/business-logic.rst
@@ -148,8 +148,8 @@ distributed among developers, with a slight preference towards YAML.
Both formats have the same performance, so this is ultimately a matter of
personal taste.
-We recommend YAML because it's friendly to newcomers and concise. You can
-of course use whatever format you like.
+We recommend YAML because it's friendly to newcomers and concise, but you can
+use whatever format you like.
Service: No Class Parameter
---------------------------
@@ -218,8 +218,7 @@ The three entities defined by our sample blog application are a good example:
.. tip::
- If you're more advanced, you can of course store them under your own
- namespace in ``src/``.
+ If you're more advanced, you can store them under your own namespace in ``src/``.
Doctrine Mapping Information
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/best_practices/configuration.rst b/best_practices/configuration.rst
index 0938eaa4561..d6e51c47451 100644
--- a/best_practices/configuration.rst
+++ b/best_practices/configuration.rst
@@ -132,8 +132,8 @@ Constants can be used for example in your Twig templates thanks to the
Displaying the {{ constant('NUMBER_OF_ITEMS', post) }} most recent results.
-And Doctrine entities and repositories can now easily access these values,
-whereas they cannot access the container parameters::
+And Doctrine entities and repositories can access these values too, whereas they
+cannot access the container parameters::
namespace AppBundle\Repository;
@@ -149,7 +149,7 @@ whereas they cannot access the container parameters::
}
The only notable disadvantage of using constants for this kind of configuration
-values is that you cannot redefine them easily in your tests.
+values is that it's complicated to redefine their values in your tests.
Parameter Naming
----------------
diff --git a/best_practices/controllers.rst b/best_practices/controllers.rst
index 22605898357..a4493702797 100644
--- a/best_practices/controllers.rst
+++ b/best_practices/controllers.rst
@@ -80,10 +80,10 @@ The ``@Template`` annotation is useful, but also involves some magic. We
don't think its benefit is worth the magic, and so recommend against using
it.
-Most of the time, ``@Template`` is used without any parameters, which makes
-it more difficult to know which template is being rendered. It also makes
-it less obvious to beginners that a controller should always return a Response
-object (unless you're using a view layer).
+Most of the time, ``@Template`` is used without any parameters, which makes it
+more difficult to know which template is being rendered. It also hides the fact
+that a controller should always return a Response object (unless you're using a
+view layer).
What does the Controller look like
----------------------------------
diff --git a/best_practices/introduction.rst b/best_practices/introduction.rst
index 1826cfad3b5..63ae1319d0d 100644
--- a/best_practices/introduction.rst
+++ b/best_practices/introduction.rst
@@ -47,11 +47,10 @@ of these best practices. But by following these, you'll be able to develop
applications faster, with less complexity and with the same or even higher
quality. It's also a moving target that will continue to improve.
-Keep in mind that these are **optional recommendations** that you and your
-team may or may not follow to develop Symfony applications. If you want to
-continue using your own best practices and methodologies, you can of course
-do it. Symfony is flexible enough to adapt to your needs. That will never
-change.
+Keep in mind that these are **optional recommendations** that you and your team
+may or may not follow to develop Symfony applications. If you want to continue
+using your own best practices and methodologies, you can do it. Symfony is
+flexible enough to adapt to your needs. That will never change.
Who this Book Is for (Hint: It's not a Tutorial)
------------------------------------------------
diff --git a/best_practices/security.rst b/best_practices/security.rst
index f709d4f8d29..5be6b6eca30 100644
--- a/best_practices/security.rst
+++ b/best_practices/security.rst
@@ -19,10 +19,10 @@ primarily under the ``firewalls`` key.
API only), we recommend having only *one* firewall entry with the ``anonymous``
key enabled.
-Most applications only have one authentication system and one set of users.
-For this reason, you only need *one* firewall entry. There are exceptions
-of course, especially if you have separated web and API sections on your
-site. But the point is to keep things simple.
+Most applications only have one authentication system and one set of users. For
+this reason, you only need *one* firewall entry. If you have separated web and
+API sections on your site, you will need more firewall entries. But the point is
+to keep things simple.
Additionally, you should use the ``anonymous`` key under your firewall. If
you need to require users to be logged in for different sections of your
diff --git a/best_practices/tests.rst b/best_practices/tests.rst
index 4a26ee7139c..f6f67685535 100644
--- a/best_practices/tests.rst
+++ b/best_practices/tests.rst
@@ -104,8 +104,8 @@ The built-in functional testing client is great, but it can't be used to
test any JavaScript behavior on your pages. If you need to test this, consider
using the `Mink`_ library from within PHPUnit.
-Of course, if you have a heavy JavaScript frontend, you should consider using
-pure JavaScript-based testing tools.
+If you have a heavy JavaScript frontend, you should consider using pure
+JavaScript-based testing tools.
Learn More about Functional Tests
---------------------------------
diff --git a/components/console/single_command_tool.rst b/components/console/single_command_tool.rst
index 46576b9c680..74c554c46ef 100644
--- a/components/console/single_command_tool.rst
+++ b/components/console/single_command_tool.rst
@@ -33,7 +33,7 @@ The method :method:`Symfony\\Component\\Console\\Application::setDefaultCommand`
accepts a boolean as second parameter. If true, the command ``echo`` will then
always be used, without having to pass its name.
-Of course, you can still register a command as usual::
+You can still register a command as usual::
#!/usr/bin/env php
`
+You can also use normal :ref:`constructor injection `
in your controllers.
.. caution::
diff --git a/controller/error_pages.rst b/controller/error_pages.rst
index 74fd299953f..a32316c8410 100644
--- a/controller/error_pages.rst
+++ b/controller/error_pages.rst
@@ -248,8 +248,8 @@ will be passed two parameters:
A :class:`\\Symfony\\Component\\HttpKernel\\Log\\DebugLoggerInterface`
instance which may be ``null`` in some circumstances.
-Instead of creating a new exception controller from scratch you can, of course,
-also extend the default :class:`Symfony\\Bundle\\TwigBundle\\Controller\\ExceptionController`.
+Instead of creating a new exception controller from scratch you can also extend
+the default :class:`Symfony\\Bundle\\TwigBundle\\Controller\\ExceptionController`.
In that case, you might want to override one or both of the ``showAction()`` and
``findTemplate()`` methods. The latter one locates the template to be used.
diff --git a/controller/soap_web_service.rst b/controller/soap_web_service.rst
index 4fd695ddff5..6d1bd2a3be4 100644
--- a/controller/soap_web_service.rst
+++ b/controller/soap_web_service.rst
@@ -6,10 +6,10 @@
How to Create a SOAP Web Service in a Symfony Controller
========================================================
-Setting up a controller to act as a SOAP server is simple with a couple
-tools. You must, of course, have the `PHP SOAP`_ extension installed.
-As the PHP SOAP extension cannot currently generate a WSDL, you must either
-create one from scratch or use a 3rd party generator.
+Setting up a controller to act as a SOAP server is simple with a couple tools.
+You must have the `PHP SOAP`_ extension installed. As the PHP SOAP extension
+cannot currently generate a WSDL, you must either create one from scratch or use
+a 3rd party generator.
.. note::
diff --git a/create_framework/event_dispatcher.rst b/create_framework/event_dispatcher.rst
index ec7cf1dec28..4adea3cd058 100644
--- a/create_framework/event_dispatcher.rst
+++ b/create_framework/event_dispatcher.rst
@@ -247,8 +247,8 @@ issue: the knowledge of the priorities is "hardcoded" in the front controller,
instead of being in the listeners themselves. For each application, you have
to remember to set the appropriate priorities. Moreover, the listener method
names are also exposed here, which means that refactoring our listeners would
-mean changing all the applications that rely on those listeners. Of course,
-there is a solution: use subscribers instead of listeners::
+mean changing all the applications that rely on those listeners. But there is a
+solution: use subscribers instead of listeners::
$dispatcher = new EventDispatcher();
$dispatcher->addSubscriber(new Simplex\ContentLengthListener());
diff --git a/create_framework/http_foundation.rst b/create_framework/http_foundation.rst
index 61f04f36d0d..db8021a1877 100644
--- a/create_framework/http_foundation.rst
+++ b/create_framework/http_foundation.rst
@@ -9,10 +9,9 @@ top of the Symfony components is better than creating a framework from scratch.
.. note::
- We won't talk about the obvious and traditional benefits of using a
- framework when working on big applications with more than a few
- developers; the Internet has already plenty of good resources on that
- topic.
+ We won't talk about the traditional benefits of using a framework when
+ working on big applications with more than a few developers; the Internet
+ has already plenty of good resources on that topic.
Even if the "application" we wrote in the previous chapter was simple enough,
it suffers from a few problems::
@@ -87,9 +86,9 @@ reading this book now and go back to whatever code you were working on before.
.. note::
- Of course, using a framework should give you more than just security and
- testability, but the more important thing to keep in mind is that the
- framework you choose must allow you to write better code faster.
+ Using a framework should give you more than just security and testability,
+ but the more important thing to keep in mind is that the framework you
+ choose must allow you to write better code faster.
Going OOP with the HttpFoundation Component
-------------------------------------------
diff --git a/create_framework/http_kernel_httpkernel_class.rst b/create_framework/http_kernel_httpkernel_class.rst
index a7c90a45e2a..056ec134802 100644
--- a/create_framework/http_kernel_httpkernel_class.rst
+++ b/create_framework/http_kernel_httpkernel_class.rst
@@ -104,8 +104,8 @@ The error controller reads as follows::
}
}
-VoilĂ ! Clean and customizable error management without efforts. And of course,
-if your controller throws an exception, HttpKernel will handle it nicely.
+*VoilĂ !* Clean and customizable error management without efforts. And if your
+controller throws an exception, HttpKernel will handle it nicely.
In chapter two, we talked about the ``Response::prepare()`` method, which
ensures that a Response is compliant with the HTTP specification. It is
diff --git a/create_framework/introduction.rst b/create_framework/introduction.rst
index d503fed1503..fdecc331683 100644
--- a/create_framework/introduction.rst
+++ b/create_framework/introduction.rst
@@ -38,8 +38,7 @@ you can use as is or as a start for your very own. It will start with a simple
framework and more features will be added with time. Eventually, you will have
a fully-featured full-stack web framework.
-And of course, each step will be the occasion to learn more about some of the
-Symfony Components.
+Each step will be the occasion to learn more about some of the Symfony Components.
Many modern web frameworks advertize themselves as being MVC frameworks. This
tutorial won't talk about the MVC pattern, as the Symfony Components are able to
diff --git a/create_framework/templating.rst b/create_framework/templating.rst
index 86eea7d7c20..30dbf992110 100644
--- a/create_framework/templating.rst
+++ b/create_framework/templating.rst
@@ -69,8 +69,8 @@ the ``_controller`` route attribute::
$response = new Response('An error occurred', 500);
}
-A route can now be associated with any controller and of course, within a
-controller, you can still use the ``render_template()`` to render a template::
+A route can now be associated with any controller and, within a controller, you
+can still use the ``render_template()`` to render a template::
$routes->add('hello', new Routing\Route('/hello/{name}', [
'name' => 'World',
diff --git a/deployment.rst b/deployment.rst
index 3999e023143..fef394ef256 100644
--- a/deployment.rst
+++ b/deployment.rst
@@ -105,7 +105,7 @@ specifically tailored to the requirements of Symfony.
Helps you build a native Debian package for your Symfony project.
Basic scripting
- You can of course use shell, `Ant`_ or any other build tool to script
+ You can use shell, `Ant`_ or any other build tool to script
the deploying of your project.
Common Post-Deployment Tasks
diff --git a/deployment/azure-website.rst b/deployment/azure-website.rst
index d27e2ea3aad..1655c0ecedc 100644
--- a/deployment/azure-website.rst
+++ b/deployment/azure-website.rst
@@ -92,7 +92,7 @@ Configuring the latest PHP Runtime
Even though Symfony only requires PHP 5.5.9 to run, it's always recommended
to use the most recent PHP version whenever possible. Earlier versions are no longer
-supported by the PHP core team, but you can update it easily in Azure.
+supported by the PHP core team, but you can update it in Azure.
To update your PHP version on Azure, go to the **Application settings** under
**SETTINGS** and select the version you want.
@@ -132,7 +132,7 @@ directory (``site/wwwroot``).
upload_max_filesize = 10M
None of these settings *needs* to be overridden. The default PHP configuration
-is already pretty good, so this is just an example to show how you can easily
+is already pretty good, so this is just an example to show how you can
tweak PHP internal settings by uploading your custom ``.ini`` file.
You can either manually create this file on your Azure Website FTP server under
@@ -172,7 +172,7 @@ access the online **Kudu** tool by browsing to the following URL:
**Kudu** is a set of tools to manage your application. It comes with a file
explorer, a command line prompt, a log stream and a configuration settings summary
-page. Of course, this section can only be accessed if you're logged in to
+page. This section can only be accessed if you're logged in to
your main Azure Website account.
.. image:: /_images/deployment/azure-website/step-09.png
@@ -336,7 +336,7 @@ make them appear.
:alt: MySQL database settings
The displayed MySQL database settings should be something similar to the code
-below. Of course, each value depends on what you've already configured.
+below. Each value depends on what you've already configured.
.. code-block:: text
@@ -363,7 +363,7 @@ the host-name and credentials of some other third-party mailing service if
your application needs to send emails.
Your Symfony application is now configured and should be almost operational. The
-final step is to build the database schema. This can easily be done with the
+final step is to build the database schema. This can be done with the
command line interface if you're using Doctrine. In the online **Console** tool
of the Kudu application, run the following command to mount the tables into your
MySQL database.
@@ -391,7 +391,7 @@ Configure the Web Server
At this point, the Symfony application has been deployed and works perfectly on
the Azure Website. However, the ``web`` folder is still part of the URL, which
-you definitely don't want. But don't worry! You can easily configure the web
+you definitely don't want. But don't worry! You can configure the web
server to point to the ``web`` folder and remove the ``web`` in the URL (and
guarantee that nobody can access files outside of the ``web`` directory.)
@@ -446,7 +446,7 @@ Conclusion
----------
Nice work! You've now deployed your Symfony application to the Microsoft
-Azure Website Cloud platform. You also saw that Symfony can be easily configured
+Azure Website Cloud platform. You also saw that Symfony can be configured
and executed on a Microsoft IIS web server. The process is simple and easy
to implement. And as a bonus, Microsoft is continuing to reduce the number
of steps needed so that deployment becomes even easier.
diff --git a/doctrine.rst b/doctrine.rst
index 9ff5a497620..af11b408455 100644
--- a/doctrine.rst
+++ b/doctrine.rst
@@ -111,8 +111,8 @@ information. By convention, this information is usually configured in an
]);
By separating the database information into a separate file, you can
- easily keep different versions of the file on each server. You can also
- easily store database configuration (or any sensitive information) outside
+ keep different versions of the file on each server. You can also
+ store database configuration (or any sensitive information) outside
of your project, like inside your Apache configuration, for example. For
more information, see :doc:`/configuration/external_parameters`.
@@ -476,10 +476,10 @@ Creating the Database Tables/Schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
You now have a usable ``Product`` class with mapping information so that
-Doctrine knows exactly how to persist it. Of course, you don't yet have the
-corresponding ``product`` table in your database. Fortunately, Doctrine can
-automatically create all the database tables needed for every known entity
-in your application. To do this, run:
+Doctrine knows exactly how to persist it. You don't yet have the corresponding
+``product`` table in your database. Fortunately, Doctrine can automatically
+create all the database tables needed for every known entity in your
+application. To do this, run:
.. code-block:: terminal
@@ -662,11 +662,11 @@ Once you have a repository object, you can access all sorts of helpful methods::
.. note::
- Of course, you can also issue complex queries, which you'll learn more
+ You can also issue complex queries, which you'll learn more
about in the :ref:`doctrine-queries` section.
You can also take advantage of the useful ``findBy()`` and ``findOneBy()`` methods
-to easily fetch objects based on multiple conditions::
+to fetch objects based on multiple conditions::
$repository = $this->getDoctrine()->getRepository(Product::class);
@@ -759,10 +759,10 @@ without any work::
$product = $repository->find($productId);
$product = $repository->findOneByName('Keyboard');
-Of course, Doctrine also allows you to write more complex queries using the
-Doctrine Query Language (DQL). DQL is similar to SQL except that you should
-imagine that you're querying for one or more objects of an entity class (e.g. ``Product``)
-instead of querying for rows on a table (e.g. ``product``).
+Doctrine also allows you to write more complex queries using the Doctrine Query
+Language (DQL). DQL is similar to SQL except that you should imagine that you're
+querying for one or more objects of an entity class (e.g. ``Product``) instead
+of querying for rows on a table (e.g. ``product``).
When querying in Doctrine, you have two main options: writing pure DQL queries
or using Doctrine's Query Builder.
@@ -800,7 +800,7 @@ result, you can use ``getOneOrNullResult()``::
$product = $query->setMaxResults(1)->getOneOrNullResult();
-The DQL syntax is incredibly powerful, allowing you to easily join between
+The DQL syntax is incredibly powerful, allowing you to join between
entities (the topic of :doc:`relations ` will be
covered later), group, etc. For more information, see the official
`Doctrine Query Language`_ documentation.
diff --git a/doctrine/associations.rst b/doctrine/associations.rst
index 22f31503927..bf3b618f6c6 100644
--- a/doctrine/associations.rst
+++ b/doctrine/associations.rst
@@ -369,9 +369,9 @@ objects).
Remember that you can see all of the queries made during a request via
the web debug toolbar.
-Of course, if you know up front that you'll need to access both objects, you
-can avoid the second query by issuing a join in the original query. Add the
-following method to the ``ProductRepository`` class::
+If you know up front that you'll need to access both objects, you can avoid the
+second query by issuing a join in the original query. Add the following method
+to the ``ProductRepository`` class::
// src/AppBundle/Repository/ProductRepository.php
public function findOneByIdJoinedToCategory($productId)
diff --git a/email/spool.rst b/email/spool.rst
index 9709fc4c371..faf7be3fdd1 100644
--- a/email/spool.rst
+++ b/email/spool.rst
@@ -139,9 +139,9 @@ You can also set the time limit in seconds:
$ php bin/console swiftmailer:spool:send --time-limit=10 --env=prod
-Of course you will not want to run this manually in reality. Instead, the
-console command should be triggered by a cron job or scheduled task and run
-at a regular interval.
+In practice you will not want to run this manually. Instead, the console command
+should be triggered by a cron job or scheduled task and run at a regular
+interval.
.. caution::
diff --git a/form/embedded.rst b/form/embedded.rst
index 7b663457e68..a86f5c0270b 100644
--- a/form/embedded.rst
+++ b/form/embedded.rst
@@ -15,7 +15,7 @@ Embedding a Single Object
-------------------------
Suppose that each ``Task`` belongs to a simple ``Category`` object. Start,
-of course, by creating the ``Category`` object::
+by creating the ``Category`` object::
// src/AppBundle/Entity/Category.php
namespace AppBundle\Entity;
diff --git a/form/rendering.rst b/form/rendering.rst
index 722be3114c2..2eddd8e01da 100644
--- a/form/rendering.rst
+++ b/form/rendering.rst
@@ -5,7 +5,7 @@ How to Control the Rendering of a Form
======================================
So far, you've seen how an entire form can be rendered with just one line
-of code. Of course, you'll usually need much more flexibility when rendering:
+of code. You'll usually need much more flexibility when rendering:
.. code-block:: twig
diff --git a/forms.rst b/forms.rst
index 0c8b95c320a..e12fd3c751e 100644
--- a/forms.rst
+++ b/forms.rst
@@ -63,7 +63,7 @@ going to need to build a form. But before you begin, first focus on the generic
This class is a "plain-old-PHP-object" because, so far, it has nothing
to do with Symfony or any other library. It's a normal PHP object that
directly solves a problem inside *your* application (i.e. the need to
-represent a task in your application). Of course, by the end of this article,
+represent a task in your application). By the end of this article,
you'll be able to submit data to a ``Task`` instance (via an HTML form), validate
its data and persist it to the database.
@@ -682,7 +682,7 @@ choice is ultimately up to you.
use AppBundle\Form\TaskType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
- class DefaultController extends AbstractController
+ class DefaultController extends AbstractController
{
public function newAction()
{
diff --git a/frontend/assetic/asset_management.rst b/frontend/assetic/asset_management.rst
index f3b394601c8..1f0df69ea2a 100644
--- a/frontend/assetic/asset_management.rst
+++ b/frontend/assetic/asset_management.rst
@@ -271,11 +271,10 @@ single file:
{% endjavascripts %}
-In the ``dev`` environment, each file is still served individually, so that
-you can debug problems more easily. However, in the ``prod`` environment
-(or more specifically, when the ``debug`` flag is ``false``), this will be
-rendered as a single ``script`` tag, which contains the contents of all of
-the JavaScript files.
+In the ``dev`` environment, each file is still served individually, so that you
+can debug problems. However, in the ``prod`` environment (or more specifically,
+when the ``debug`` flag is ``false``), this will be rendered as a single
+``script`` tag, which contains the contents of all of the JavaScript files.
.. tip::
diff --git a/frontend/assetic/jpeg_optimize.rst b/frontend/assetic/jpeg_optimize.rst
index 6b6b136c791..b4253a0de56 100644
--- a/frontend/assetic/jpeg_optimize.rst
+++ b/frontend/assetic/jpeg_optimize.rst
@@ -123,7 +123,7 @@ Lowering Maximum Quality
By default, the ``jpegoptim`` filter doesn't alter the quality level of the JPEG
image. Use the ``max`` option to configure the maximum quality setting (in a
-scale of ``0`` to ``100``). The reduction in the image file size will of course
+scale of ``0`` to ``100``). The reduction in the image file size will
be at the expense of its quality:
.. configuration-block::
diff --git a/frontend/encore/shared-entry.rst b/frontend/encore/shared-entry.rst
index 303b3ee5d06..6693b649d8d 100644
--- a/frontend/encore/shared-entry.rst
+++ b/frontend/encore/shared-entry.rst
@@ -30,7 +30,7 @@ then ``jquery`` would be packaged into *both* files, which is wasteful. By makin
*no longer* be packaged into any other files. The same is true for any CSS.
Because ``app.js`` contains all the common code that other entry files depend on,
-it's obvious that its script (and link) tag must be on every page.
+its script (and link) tag must be on every page.
.. tip::
diff --git a/frontend/encore/simple-example.rst b/frontend/encore/simple-example.rst
index 09af99c4a96..be83bcf1e2d 100644
--- a/frontend/encore/simple-example.rst
+++ b/frontend/encore/simple-example.rst
@@ -23,7 +23,7 @@ application: it will *require* all of the dependencies it needs (e.g. jQuery or
Encore's job (via Webpack) is simple: to read and follow *all* of the ``require``
statements and create one final ``app.js`` (and ``app.css``) that contains *everything*
-your app needs. Of course, Encore can do a lot more: minify files, pre-process Sass/LESS,
+your app needs. Encore can do a lot more: minify files, pre-process Sass/LESS,
support React, Vue.js, etc.
Configuring Encore/Webpack
diff --git a/http_cache.rst b/http_cache.rst
index 58fbb760948..5bf9ea49598 100644
--- a/http_cache.rst
+++ b/http_cache.rst
@@ -13,7 +13,7 @@ Caching on the Shoulders of Giants
----------------------------------
With HTTP Caching, you cache the full output of a page (i.e. the response) and bypass
-your application *entirely* on subsequent requests. Of course, caching entire responses
+your application *entirely* on subsequent requests. Caching entire responses
isn't always possible for highly dynamic sites, or is it? With
:doc:`Edge Side Includes (ESI) `, you can use the power of HTTP caching
on only *fragments* of your site.
diff --git a/http_cache/_expiration-and-validation.rst.inc b/http_cache/_expiration-and-validation.rst.inc
index 26cc483845d..7ee62604533 100644
--- a/http_cache/_expiration-and-validation.rst.inc
+++ b/http_cache/_expiration-and-validation.rst.inc
@@ -1,6 +1,6 @@
.. sidebar:: Expiration and Validation
- You can of course use both validation and expiration within the same ``Response``.
+ You can use both validation and expiration within the same ``Response``.
As expiration wins over validation, you can benefit from the best of both worlds.
In other words, by using both expiration and validation, you can instruct the cache
to serve the cached content, while checking back at some interval (the expiration)
diff --git a/http_cache/varnish.rst b/http_cache/varnish.rst
index d752cec0439..259c5c1a583 100644
--- a/http_cache/varnish.rst
+++ b/http_cache/varnish.rst
@@ -5,7 +5,7 @@ How to Use Varnish to Speed up my Website
=========================================
Because Symfony's cache uses the standard HTTP cache headers, the
-:ref:`symfony-gateway-cache` can easily be replaced with any other reverse
+:ref:`symfony-gateway-cache` can be replaced with any other reverse
proxy. `Varnish`_ is a powerful, open-source, HTTP accelerator capable of serving
cached content fast and including support for :doc:`Edge Side Includes `.
diff --git a/introduction/from_flat_php_to_symfony.rst b/introduction/from_flat_php_to_symfony.rst
index bd678900a5c..77ac92c5be8 100644
--- a/introduction/from_flat_php_to_symfony.rst
+++ b/introduction/from_flat_php_to_symfony.rst
@@ -133,7 +133,7 @@ of *your* code that processes user input and prepares the response.
In this case, the controller prepares data from the database and then includes
a template to present that data. With the controller isolated, you could
-easily change *just* the template file if you needed to render the blog
+change *just* the template file if you needed to render the blog
entries in some other format (e.g. ``list.json.php`` for JSON format).
Isolating the Application (Domain) Logic
@@ -243,9 +243,8 @@ the ``templates/layout.php``:
You now have a setup that will allow you to reuse the layout.
Unfortunately, to accomplish this, you're forced to use a few ugly
PHP functions (``ob_start()``, ``ob_get_clean()``) in the template. Symfony
-uses a :doc:`Templating ` component
-that allows this to be accomplished cleanly and easily. You'll see it in
-action shortly.
+solves this using a :doc:`Templating ` component.
+You'll see it in action shortly.
Adding a Blog "show" Page
-------------------------
@@ -307,7 +306,7 @@ Creating the second page is now very easy and no code is duplicated. Still,
this page introduces even more lingering problems that a framework can solve
for you. For example, a missing or invalid ``id`` query parameter will cause
the page to crash. It would be better if this caused a 404 page to be rendered,
-but this can't really be done easily yet.
+but this can't really be done yet.
Another major problem is that each individual controller file must include
the ``model.php`` file. What if each controller file suddenly needed to include
diff --git a/introduction/http_fundamentals.rst b/introduction/http_fundamentals.rst
index 39b78cec041..fa605ea2ec8 100644
--- a/introduction/http_fundamentals.rst
+++ b/introduction/http_fundamentals.rst
@@ -275,11 +275,11 @@ and more.
that you can use in *any* PHP project. This also contains classes for handling
sessions, file uploads and more.
-If Symfony offered nothing else, you would already have a toolkit for easily
-accessing request information and an object-oriented interface for creating
-the response. Even as you learn the many powerful features in Symfony, keep
-in mind that the goal of your application is always *to interpret a request
-and create the appropriate response based on your application logic*.
+If Symfony offered nothing else, you would already have a toolkit for accessing
+request information and an object-oriented interface for creating the response.
+Even as you learn the many powerful features in Symfony, keep in mind that the
+goal of your application is always *to interpret a request and create the
+appropriate response based on your application logic*.
The Journey from the Request to the Response
--------------------------------------------
diff --git a/quick_tour/the_architecture.rst b/quick_tour/the_architecture.rst
index 1c0b6325663..d6d4cfd4be8 100644
--- a/quick_tour/the_architecture.rst
+++ b/quick_tour/the_architecture.rst
@@ -88,7 +88,7 @@ for your application.
All the code you write for your application is organized in bundles. In
Symfony speak, a bundle is a structured set of files (PHP files, stylesheets,
JavaScripts, images, ...) that implements a single feature (a blog, a forum,
-...) and which can be easily shared with other developers.
+...) and which can be shared with other developers.
Bundles are first-class citizens in Symfony. This gives you the flexibility
to use pre-built features packaged in third-party bundles or to distribute
diff --git a/quick_tour/the_big_picture.rst b/quick_tour/the_big_picture.rst
index 525c0e8c411..1a75af1a533 100644
--- a/quick_tour/the_big_picture.rst
+++ b/quick_tour/the_big_picture.rst
@@ -20,7 +20,7 @@ Understanding the Fundamentals
------------------------------
One of the main goals of a framework is to keep your code organized and
-to allow your application to evolve easily over time by avoiding the mixing
+to allow your application to evolve over time by avoiding the mixing
of database calls, HTML tags and other PHP code in the same script. To achieve
this goal with Symfony, you'll first need to learn a few fundamental concepts.
diff --git a/quick_tour/the_controller.rst b/quick_tour/the_controller.rst
index 105e2270ed3..2c4b94609d9 100644
--- a/quick_tour/the_controller.rst
+++ b/quick_tour/the_controller.rst
@@ -128,9 +128,9 @@ as its default value::
]);
}
-Obviously, when you support several request formats, you have to provide
-a template for each of the supported formats. In this case, you should create
-a new ``hello.xml.twig`` template:
+When you support several request formats, you have to provide a template for
+each of the supported formats. In this case, you should create a new
+``hello.xml.twig`` template:
.. code-block:: xml+php
@@ -294,7 +294,7 @@ object that represents the client (be it a real person using a browser,
a bot, or a web service). Between two requests, Symfony stores the attributes
in a cookie by using native PHP sessions.
-Storing and retrieving information from the session can be easily achieved
+Storing and retrieving information from the session can be achieved
from any controller::
use Symfony\Component\HttpFoundation\Session\Session;
diff --git a/quick_tour/the_view.rst b/quick_tour/the_view.rst
index f32ebac9694..3f48ff2607e 100644
--- a/quick_tour/the_view.rst
+++ b/quick_tour/the_view.rst
@@ -235,7 +235,7 @@ Creating Links between Pages
Creating links between pages is a must for web applications. Instead of
hardcoding URLs in templates, the ``path()`` function knows how to generate
URLs based on the routing configuration. That way, all your URLs
-can be easily updated by just changing the configuration:
+can be updated by just changing the configuration:
.. code-block:: html+twig
@@ -254,7 +254,7 @@ Including Assets: Images, JavaScripts and Stylesheets
-----------------------------------------------------
What would the Internet be without images, JavaScripts and stylesheets?
-Symfony provides the ``asset()`` function to deal with them easily:
+Symfony provides the ``asset()`` function to deal with them:
.. code-block:: html+twig
diff --git a/reference/forms/twig_reference.rst b/reference/forms/twig_reference.rst
index 901d484cdb8..d2aee822cfd 100644
--- a/reference/forms/twig_reference.rst
+++ b/reference/forms/twig_reference.rst
@@ -173,8 +173,8 @@ form_rest(view, variables)
This renders all fields that have not yet been rendered for the given form.
It's a good idea to always have this somewhere inside your form as it'll
-render hidden fields for you and make any fields you forgot to render more
-obvious (since it'll render the field for you).
+render hidden fields for you and make any fields you forgot to render easier to
+spot (since it'll render the field for you).
.. code-block:: twig
diff --git a/routing.rst b/routing.rst
index 993970df84c..9c236ff8d7d 100644
--- a/routing.rst
+++ b/routing.rst
@@ -661,8 +661,7 @@ is a bidirectional system: mapping the URL to a controller and
a route back to a URL.
To generate a URL, you need to specify the name of the route (e.g. ``blog_show``)
-and any wildcards (e.g. ``slug = my-blog-post``) used in the path for that
-route. With this information, any URL can easily be generated::
+and any wildcards (e.g. ``slug = my-blog-post``) used in the path for that route::
class MainController extends Controller
{
diff --git a/routing/custom_route_loader.rst b/routing/custom_route_loader.rst
index 2ad8e7ae1df..8aef02f2fda 100644
--- a/routing/custom_route_loader.rst
+++ b/routing/custom_route_loader.rst
@@ -290,7 +290,7 @@ can also make use of the provided resolver, an instance of
:class:`Symfony\\Component\\Config\\Loader\\LoaderResolver`, to load secondary
routing resources.
-Of course you still need to implement
+You still need to implement
:method:`Symfony\\Component\\Config\\Loader\\LoaderInterface::supports`
and :method:`Symfony\\Component\\Config\\Loader\\LoaderInterface::load`.
Whenever you want to load another resource - for instance a YAML routing
diff --git a/routing/optional_placeholders.rst b/routing/optional_placeholders.rst
index a5bdbb20fcc..d9eb0ea9a52 100644
--- a/routing/optional_placeholders.rst
+++ b/routing/optional_placeholders.rst
@@ -192,7 +192,7 @@ URL Route Parameters
.. caution::
- Of course, you can have more than one optional placeholder (e.g. ``/blog/{slug}/{page}``),
+ You can have more than one optional placeholder (e.g. ``/blog/{slug}/{page}``),
but everything after an optional placeholder must be optional. For example,
``/{page}/blog`` is a valid path, but ``page`` will always be required
(i.e. ``/blog`` will not match this route).
diff --git a/security.rst b/security.rst
index 130e639efcb..951a7285f5f 100644
--- a/security.rst
+++ b/security.rst
@@ -514,7 +514,7 @@ is ``bcrypt``:
// ...
]);
-Of course, your users' passwords now need to be encoded with this exact algorithm.
+Your users' passwords now need to be encoded with this exact algorithm.
For hardcoded users, you can use the built-in command:
.. code-block:: terminal
@@ -915,7 +915,7 @@ user is logged in (you don't care about roles), then you can use
.. tip::
- You can of course also use this in ``access_control``.
+ You can also use this in ``access_control``.
``IS_AUTHENTICATED_FULLY`` isn't a role, but it kind of acts like one, and every
user that has successfully logged in will have this. In fact, there are three
diff --git a/security/acl.rst b/security/acl.rst
index 365477ec2d9..f967f3e1801 100644
--- a/security/acl.rst
+++ b/security/acl.rst
@@ -227,7 +227,7 @@ permission. While this effectively also allows the user to perform any
operation such as view, edit, etc. on the domain object, there are cases where
you may want to grant these permissions explicitly.
-The ``MaskBuilder`` can be used for creating bit masks easily by combining
+The ``MaskBuilder`` can be used for creating bit masks by combining
several base permissions::
$builder = new MaskBuilder();
diff --git a/security/acl_advanced.rst b/security/acl_advanced.rst
index 6cd744a5a55..5e9dc046136 100644
--- a/security/acl_advanced.rst
+++ b/security/acl_advanced.rst
@@ -23,7 +23,7 @@ objectives:
- providing a way to efficiently retrieve a large amount of ACLs/ACEs for your
domain objects, and to modify them;
-- providing a way to easily make decisions of whether a person is allowed to
+- providing a way to make decisions of whether a person is allowed to
perform an action on a domain object or not.
As indicated by the first point, one of the main capabilities of Symfony's
diff --git a/security/api_key_authentication.rst b/security/api_key_authentication.rst
index e373763ed76..9f634dbb3fe 100644
--- a/security/api_key_authentication.rst
+++ b/security/api_key_authentication.rst
@@ -17,8 +17,9 @@ The API Key Authenticator
-------------------------
Authenticating a user based on the Request information should be done via a
-pre-authentication mechanism. The :class:`Symfony\\Component\\Security\\Http\\Authentication\\SimplePreAuthenticatorInterface`
-allows you to implement such a scheme really easily.
+pre-authentication mechanism using the
+:class:`Symfony\\Component\\Security\\Http\\Authentication\\SimplePreAuthenticatorInterface`
+class.
Your exact situation may differ, but in this example, a token is read
from an ``apikey`` query parameter, the proper username is loaded from that
@@ -149,7 +150,7 @@ In this specific example, the following things happen in ``authenticateToken()``
The goal is ultimately to use the ``$apiKey`` to find or create a ``User``
object. *How* you do this (e.g. query a database) and the exact class for
-your ``User`` object may vary. Those differences will be most obvious in your
+your ``User`` object may vary. Those differences will be most notable in your
user provider.
The User Provider
diff --git a/security/form_login_setup.rst b/security/form_login_setup.rst
index 7c1c2b44281..38db452d7a6 100644
--- a/security/form_login_setup.rst
+++ b/security/form_login_setup.rst
@@ -8,7 +8,7 @@ How to Build a Traditional Login Form
your ``User`` object and gives you many routes and controllers for common
tasks like login, registration and forgot password.
-In this entry, you'll build a traditional login form. Of course, when the
+In this entry, you'll build a traditional login form. When the
user logs in, you can load your users from anywhere - like the database.
See :ref:`security-user-providers` for details.
diff --git a/security/guard_authentication.rst b/security/guard_authentication.rst
index c342e8ed0d5..734a8c3efac 100644
--- a/security/guard_authentication.rst
+++ b/security/guard_authentication.rst
@@ -447,7 +447,7 @@ that describes *how* authentication failed via its ``$exception->getMessageKey()
``$exception->getMessageData()``) method. The message will be different based on *where*
authentication fails (i.e. ``getUser()`` versus ``checkCredentials()``).
-But, you can easily return a custom message by throwing a
+But, you can return a custom message by throwing a
:class:`Symfony\\Component\\Security\\Core\\Exception\\CustomUserMessageAuthenticationException`.
You can throw this from ``getCredentials()``, ``getUser()`` or ``checkCredentials()``
to cause a failure::
diff --git a/security/impersonating_user.rst b/security/impersonating_user.rst
index d708ab6ca6d..310db3350d2 100644
--- a/security/impersonating_user.rst
+++ b/security/impersonating_user.rst
@@ -126,7 +126,7 @@ over the user's roles until you find one that is a ``SwitchUserRole`` object::
}
}
-Of course, this feature needs to be made available to a small group of users.
+This feature needs to be made available to a small group of users.
By default, access is restricted to users having the ``ROLE_ALLOWED_TO_SWITCH``
role. The name of this role can be modified via the ``role`` setting. For
extra security, you can also change the query parameter name via the ``parameter``
diff --git a/security/json_login_setup.rst b/security/json_login_setup.rst
index 64f80981dfd..e5945671058 100644
--- a/security/json_login_setup.rst
+++ b/security/json_login_setup.rst
@@ -1,7 +1,7 @@
How to Build a JSON Authentication Endpoint
===========================================
-In this entry, you'll build a JSON endpoint to log in your users. Of course, when the
+In this entry, you'll build a JSON endpoint to log in your users. When the
user logs in, you can load your users from anywhere - like the database.
See :ref:`security-user-providers` for details.
diff --git a/security/ldap.rst b/security/ldap.rst
index eae1121b748..2f4a4a043a1 100644
--- a/security/ldap.rst
+++ b/security/ldap.rst
@@ -267,7 +267,7 @@ replaced by the username you are trying to load.
For example, with a ``uid_key`` of ``uid``, and if you are trying to
load the user ``fabpot``, the final string will be: ``(uid=fabpot)``.
-Of course, the username will be escaped, in order to prevent `LDAP injection`_.
+In order to prevent `LDAP injection`_, the username will be escaped.
The syntax for the ``filter`` key is defined by `RFC4515`_.
diff --git a/security/multiple_guard_authenticators.rst b/security/multiple_guard_authenticators.rst
index 48620edf2a2..74f22562305 100644
--- a/security/multiple_guard_authenticators.rst
+++ b/security/multiple_guard_authenticators.rst
@@ -1,7 +1,7 @@
How to Use Multiple Guard Authenticators
========================================
-The Guard authentication component allows you to easily use many different
+The Guard authentication component allows you to use many different
authenticators at a time.
An entry point is a service id (of one of your authenticators) whose
diff --git a/service_container.rst b/service_container.rst
index db197d30951..b1bd7b9f9a2 100644
--- a/service_container.rst
+++ b/service_container.rst
@@ -848,7 +848,7 @@ you don't need to do *anything*: the service will be automatically loaded. Then,
implements ``Twig\Extension\ExtensionInterface``. And thanks to ``autowire``, you can even add
constructor arguments without any configuration.
-Of course, you can still :ref:`manually configure the service `
+You can still :ref:`manually configure the service `
if you need to.
.. _container-public:
diff --git a/service_container/3.3-di-changes.rst b/service_container/3.3-di-changes.rst
index 3d77a900aa1..387b26c3455 100644
--- a/service_container/3.3-di-changes.rst
+++ b/service_container/3.3-di-changes.rst
@@ -410,8 +410,8 @@ it implements ``EventSubscriberInterface``.
In this case, you've created a class that implements ``EventSubscriberInterface``
and registered it as a service. This is more than enough for the container to know
that you want this to be used as an event subscriber: more configuration is not needed.
-And the tags system is its own, Symfony-specific mechanism. And of course, you can
-always set ``autoconfigure`` to ``false`` in ``services.yml``, or disable it for a specific
+And the tags system is its own, Symfony-specific mechanism. You can always set
+``autoconfigure`` to ``false`` in ``services.yml``, or disable it for a specific
service.
Does this mean tags are dead? Does this work for all tags?
diff --git a/service_container/optional_dependencies.rst b/service_container/optional_dependencies.rst
index 11bd4a59b35..40cdd6126b1 100644
--- a/service_container/optional_dependencies.rst
+++ b/service_container/optional_dependencies.rst
@@ -112,8 +112,8 @@ call if the service exists and remove the method call if it does not:
them is missing, those elements are removed but the method call is still
made with the remaining elements of the collection.
-In YAML, the special ``@?`` syntax tells the service container that the dependency
-is optional. Of course, the ``NewsletterManager`` must also be rewritten by
+In YAML, the special ``@?`` syntax tells the service container that the
+dependency is optional. The ``NewsletterManager`` must also be rewritten by
adding a ``setLogger()`` method::
public function setLogger(LoggerInterface $logger)
diff --git a/session/sessions_directory.rst b/session/sessions_directory.rst
index 6aa11327f8b..21a61d06818 100644
--- a/session/sessions_directory.rst
+++ b/session/sessions_directory.rst
@@ -47,7 +47,7 @@ this path, update the ``framework.session.save_path`` configuration key:
Storing Sessions Elsewhere (e.g. database)
------------------------------------------
-Of course, you can store your session data anywhere by using the ``handler_id`` option.
+You can store your session data anywhere by using the ``handler_id`` option.
See :doc:`/components/http_foundation/session_configuration` for a discussion of
session save handlers. There are also articles about storing sessions in a
:doc:`relational database `
diff --git a/setup/_vendor_deps.rst.inc b/setup/_vendor_deps.rst.inc
index bbb4ec1f20b..eb8e0d81e79 100644
--- a/setup/_vendor_deps.rst.inc
+++ b/setup/_vendor_deps.rst.inc
@@ -52,7 +52,7 @@ script to ensure that all of the needed vendor libraries are downloaded.
upgrading Symfony means simply upgrading each of these files to match
their state in the latest Symfony Standard Edition.
- Of course, if you've added new entries to ``composer.json``, be sure
+ If you've added new entries to ``composer.json``, be sure
to replace only the original parts (i.e. be sure not to also delete any of
your custom entries).
diff --git a/setup/new_project_git.rst b/setup/new_project_git.rst
index d434c90291a..c6a853b251a 100644
--- a/setup/new_project_git.rst
+++ b/setup/new_project_git.rst
@@ -83,9 +83,8 @@ both for backup purposes, and so that other developers can collaborate on
the project.
The easiest way to store your project on a remote server is via a web-based
-hosting service like `GitHub`_ or `Bitbucket`_. Of course, there are more
-services out there, you can start your research with a
-`comparison of hosting services`_.
+hosting service like `GitHub`_ or `Bitbucket`_. There are more services out
+there, you can start your research with a `comparison of hosting services`_.
Alternatively, you can store your Git repository on any server by creating
a `barebones repository`_ and then pushing to it. One library that helps
diff --git a/setup/upgrade_major.rst b/setup/upgrade_major.rst
index ee7cbd7043d..ce7c2a975ea 100644
--- a/setup/upgrade_major.rst
+++ b/setup/upgrade_major.rst
@@ -44,7 +44,7 @@ in your browser, these notices are shown in the web dev toolbar:
:align: center
:class: with-browser
-Of course ultimately, you want to stop using the deprecated functionality.
+Ultimately, you want to stop using the deprecated functionality.
Sometimes, this is easy: the warning might tell you exactly what to change.
But other times, the warning might be unclear: a setting somewhere might
diff --git a/setup/web_server_configuration.rst b/setup/web_server_configuration.rst
index be5d383bafe..32775918bb9 100644
--- a/setup/web_server_configuration.rst
+++ b/setup/web_server_configuration.rst
@@ -155,10 +155,10 @@ listen on. Each pool can also be run under a different UID and GID:
Using mod_proxy_fcgi with Apache 2.4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If you are running Apache 2.4, you can easily use ``mod_proxy_fcgi`` to pass
-incoming requests to PHP-FPM. Configure PHP-FPM to listen on a TCP or Unix socket,
-enable ``mod_proxy`` and ``mod_proxy_fcgi`` in your Apache configuration, and
-use the ``SetHandler`` directive to pass requests for PHP files to PHP FPM:
+If you are running Apache 2.4, you can use ``mod_proxy_fcgi`` to pass incoming
+requests to PHP-FPM. Configure PHP-FPM to listen on a TCP or Unix socket, enable
+``mod_proxy`` and ``mod_proxy_fcgi`` in your Apache configuration, and use the
+``SetHandler`` directive to pass requests for PHP files to PHP FPM:
.. code-block:: apache
diff --git a/templating.rst b/templating.rst
index 09b99cd63c8..6307321dd48 100644
--- a/templating.rst
+++ b/templating.rst
@@ -119,7 +119,7 @@ Throughout this article, template examples will be shown in both Twig and PHP.
Twig templates are meant to be simple and won't process PHP tags. This
is by design: the Twig template system is meant to express presentation,
not program logic. The more you use Twig, the more you'll appreciate
- and benefit from this distinction. And of course, you'll be loved by
+ and benefit from this distinction. And you'll be loved by
web designers everywhere.
Twig can also do things that PHP can't, such as whitespace control,
@@ -633,7 +633,7 @@ Linking to Assets
~~~~~~~~~~~~~~~~~
Templates also commonly refer to images, JavaScript, stylesheets and other
-assets. Of course you could hard-code the path to these assets (e.g. ``/images/logo.png``),
+assets. You could hard-code the path to these assets (e.g. ``/images/logo.png``),
but Symfony provides a more dynamic option via the ``asset()`` Twig function:
.. code-block:: html+twig
@@ -728,7 +728,7 @@ page. From inside that contact page's template, do the following:
{# ... #}
In the child template, you simply override the ``stylesheets`` block and
-put your new stylesheet tag inside of that block. Of course, since you want
+put your new stylesheet tag inside of that block. Since you want
to add to the parent block's content (and not actually *replace* it), you
should use the ``parent()`` Twig function to include everything from the ``stylesheets``
block of the base template.
diff --git a/templating/PHP.rst b/templating/PHP.rst
index eb88c13b856..1b787427cef 100644
--- a/templating/PHP.rst
+++ b/templating/PHP.rst
@@ -305,7 +305,7 @@ you more about those.
Using Template Helpers
----------------------
-The Symfony templating system can be easily extended via helpers. Helpers are
+The Symfony templating system can be extended via helpers. Helpers are
PHP objects that provide features useful in a template context. ``actions`` and
``slots`` are two of the built-in Symfony helpers.
@@ -314,7 +314,7 @@ Creating Links between Pages
Speaking of web applications, creating links between pages is a must. Instead
of hardcoding URLs in templates, the ``router`` helper knows how to generate
-URLs based on the routing configuration. That way, all your URLs can be easily
+URLs based on the routing configuration. That way, all your URLs can be
updated by changing the configuration:
.. code-block:: html+php
@@ -339,7 +339,7 @@ Using Assets: Images, JavaScripts and Stylesheets
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
What would the Internet be without images, JavaScripts, and stylesheets?
-Symfony provides the ``assets`` tag to deal with them easily:
+Symfony provides the ``assets`` tag to deal with them:
.. code-block:: html+php
diff --git a/templating/formats.rst b/templating/formats.rst
index ad00ddab428..e4cb8b9ff8b 100644
--- a/templating/formats.rst
+++ b/templating/formats.rst
@@ -4,9 +4,9 @@
How to Work with Different Output Formats in Templates
======================================================
-Templates are a generic way to render content in *any* format. While in
-most cases you'll use templates to render HTML content, a template can just
-as easily generate JavaScript, CSS, XML or any other format you can dream of.
+Templates are a generic way to render content in *any* format. While in most
+cases you'll use templates to render HTML content, a template can generate
+JavaScript, CSS, XML or any other format you can dream of.
For example, the same "resource" is often rendered in several formats.
To render an article index page in XML, simply include the format in the
diff --git a/templating/inheritance.rst b/templating/inheritance.rst
index d4c2c6525a0..59c7b915500 100644
--- a/templating/inheritance.rst
+++ b/templating/inheritance.rst
@@ -51,5 +51,4 @@ When building your application, you may choose to follow this method or simply
make each page template extend the base application template directly
(e.g. ``{% extends 'base.html.twig' %}``). The three-template model is a
best-practice method used by vendor bundles so that the base template for a
-bundle can be easily overridden to properly extend your application's base
-layout.
+bundle can be overridden to properly extend your application's base layout.
diff --git a/templating/namespaced_paths.rst b/templating/namespaced_paths.rst
index bea00cfd13d..1ddd7605eba 100644
--- a/templating/namespaced_paths.rst
+++ b/templating/namespaced_paths.rst
@@ -69,7 +69,7 @@ directory:
The registered namespace is called ``foo_bar``, which refers to the
``vendor/acme/foo-bar/templates`` directory. Assuming there's a file
-called ``sidebar.twig`` in that directory, you can use it easily:
+called ``sidebar.twig`` in that directory, you can use it as follows:
.. code-block:: twig
diff --git a/templating/render_without_controller.rst b/templating/render_without_controller.rst
index 3a45667a23b..b5cca5161d3 100644
--- a/templating/render_without_controller.rst
+++ b/templating/render_without_controller.rst
@@ -53,7 +53,7 @@ can do this without creating a controller:
The ``FrameworkBundle:Template:template`` controller will simply render whatever
template you've passed as the ``template`` default value.
-You can of course also use this trick when rendering embedded controllers
+You can also use this trick when rendering embedded controllers
from within a template. But since the purpose of rendering a controller from
within a template is typically to prepare some data in a custom controller,
this is probably only useful if you'd like to cache this page partial (see
diff --git a/testing.rst b/testing.rst
index cfcb9d02bf5..80d0afa9e12 100644
--- a/testing.rst
+++ b/testing.rst
@@ -229,7 +229,7 @@ some form values and submit the corresponding form::
of form fields (e.g. ``select()`` and ``tick()``). For details, see the
`Forms`_ section below.
-Now that you can easily navigate through an application, use assertions to test
+Now that you can navigate through an application, use assertions to test
that it actually does what you expect it to. Use the Crawler to make assertions
on the DOM::
@@ -927,7 +927,7 @@ as configured in the ``phpunit.xml.dist`` file:
-But you can easily add more directories. For instance, the following
+But you can add more directories. For instance, the following
configuration adds tests from a custom ``lib/tests`` directory:
.. code-block:: xml
diff --git a/testing/doctrine.rst b/testing/doctrine.rst
index 89c34823029..39a1d104498 100644
--- a/testing/doctrine.rst
+++ b/testing/doctrine.rst
@@ -8,8 +8,8 @@ Unit testing Doctrine repositories in a Symfony project is not recommended.
When you're dealing with a repository, you're really dealing with something
that's meant to be tested against a real database connection.
-Fortunately, you can easily test your queries against a real database, as
-described below.
+Fortunately, you can test your queries against a real database, as described
+below.
Functional Testing
------------------
diff --git a/validation/groups.rst b/validation/groups.rst
index 253e3e59395..6f1c9391100 100644
--- a/validation/groups.rst
+++ b/validation/groups.rst
@@ -182,6 +182,6 @@ as the third argument to the ``validate()`` method::
If no groups are specified, all constraints that belong to the group ``Default``
will be applied.
-Of course, you'll usually work with validation indirectly through the form
+You'll usually work with validation indirectly through the form
library. For information on how to use validation groups inside forms, see
:doc:`/form/validation_groups`.