diff --git a/book/controller.rst b/book/controller.rst index a94cd1a9194..2d3f2ec6561 100644 --- a/book/controller.rst +++ b/book/controller.rst @@ -11,7 +11,7 @@ a serialized JSON array, an image, a redirect, a 404 error or anything else you can dream up. The controller contains whatever arbitrary logic *your application* needs to render the content of a page. -To see how simple this is, let's look at a Symfony2 controller in action. +See how simple this is, by looking at a Symfony2 controller in action. The following controller would render a page that simply prints ``Hello world!``:: use Symfony\Component\HttpFoundation\Response; @@ -115,7 +115,7 @@ a controller object. Controllers are also called *actions*. will house several controllers/actions (e.g. ``updateAction``, ``deleteAction``, etc). -This controller is pretty straightforward, but let's walk through it: +This controller is pretty straightforward: * *line 4*: Symfony2 takes advantage of PHP 5.3 namespace functionality to namespace the entire controller class. The ``use`` keyword imports the diff --git a/book/doctrine.rst b/book/doctrine.rst index 0312d8f313f..b9dc2b69c9a 100644 --- a/book/doctrine.rst +++ b/book/doctrine.rst @@ -4,7 +4,7 @@ Databases and Doctrine ====================== -Let's face it, one of the most common and challenging tasks for any application +One of the most common and challenging tasks for any application involves persisting and reading information to and from a database. Fortunately, Symfony comes integrated with `Doctrine`_, a library whose sole goal is to give you powerful tools to make this easy. In this chapter, you'll learn the @@ -15,8 +15,8 @@ be. Doctrine is totally decoupled from Symfony and using it is optional. This chapter is all about the Doctrine ORM, which aims to let you map - objects to a relational database (such as *MySQL*, *PostgreSQL* or - *Microsoft SQL*). If you prefer to use raw database queries, this is + objects to a relational database (such as *MySQL*, *PostgreSQL* or + *Microsoft SQL*). If you prefer to use raw database queries, this is easy, and explained in the ":doc:`/cookbook/doctrine/dbal`" cookbook entry. You can also persist data to `MongoDB`_ using Doctrine ODM library. For @@ -418,7 +418,7 @@ of the bundle: If you're following along with this example, you'll need to create a route that points to this action to see it work. -Let's walk through this example: +Walking through this example: * **lines 9-12** In this section, you instantiate and work with the ``$product`` object like any other, normal PHP object. @@ -956,7 +956,7 @@ table, and ``product.category_id`` column, and new foreign key: Saving Related Entities ~~~~~~~~~~~~~~~~~~~~~~~ -Now, let's see the code in action. Imagine you're inside a controller:: +Now, to see the code in action. Imagine you're inside a controller:: // ... @@ -1371,7 +1371,7 @@ Some notable or interesting tasks include: .. caution:: - Don't forget to add the ``--no-debug`` switch, because the debug flag is + Don't forget to add the ``--no-debug`` switch, because the debug flag is always set to true, even if the environment is set to ``prod``. * ``doctrine:mapping:import`` - allows Doctrine to introspect an existing diff --git a/book/forms.rst b/book/forms.rst index 51bc5bcb7b1..c2214b52293 100644 --- a/book/forms.rst +++ b/book/forms.rst @@ -524,7 +524,7 @@ the correct values of a number of field options. * ``max_length``: If the field is some sort of text field, then the ``max_length`` option can be guessed from the validation constraints (if ``MaxLength`` or ``Max`` is used) or from the Doctrine metadata (via the field's length). - + .. note:: These field options are *only* guessed if you're using Symfony to guess @@ -576,7 +576,7 @@ of code. Of course, you'll usually need much more flexibility when rendering: -Let's take a look at each part: +Taking a look at each part: * ``form_enctype(form)`` - If at least one field is a file upload field, this renders the obligatory ``enctype="multipart/form-data"``; @@ -1029,7 +1029,7 @@ In PHP, each form "fragment" is rendered via an individual template file. To customize any part of how a form renders, you just need to override the existing template by creating a new one. -To understand how this works, let's customize the ``form_row`` fragment and +To understand how this works, customize the ``form_row`` fragment and add a class attribute to the ``div`` element that surrounds each row. To do this, create a new template file that will store the new markup: @@ -1259,7 +1259,7 @@ to define form output. ever be needed in a single template. .. caution:: - + This ``{% form_theme form _self %}`` functionality will *only* work if your template extends another. If your template does not, you must point ``form_theme`` to a separate template. diff --git a/book/installation.rst b/book/installation.rst index 7449433fef6..417baf1b6d2 100644 --- a/book/installation.rst +++ b/book/installation.rst @@ -75,8 +75,8 @@ something like this: .. note:: - You can easily override the default directory structure. See - :doc:`/cookbook/configuration/override_dir_structure` for more + You can easily override the default directory structure. See + :doc:`/cookbook/configuration/override_dir_structure` for more information. Updating Vendors @@ -135,9 +135,9 @@ If there are any issues, correct them now before moving on. **2. Using Acl on a system that does not support chmod +a** - Some systems don't support ``chmod +a``, but do support another utility + Some systems don't support ``chmod +a``, but do support another utility called ``setfacl``. You may need to `enable ACL support`_ on your partition - and install setfacl before using it (as is the case with Ubuntu), like + and install setfacl before using it (as is the case with Ubuntu), like so: .. code-block:: bash @@ -188,7 +188,7 @@ development! Your distribution may contain some sample code - check the to learn about what sample code was included with your distribution and how you can remove it later. -If you're new to Symfony, join us in the ":doc:`page_creation`", where you'll +If you're new to Symfony, look at ":doc:`page_creation`", where you'll learn how to create pages, change configuration, and do everything else you'll need in your new application. diff --git a/book/service_container.rst b/book/service_container.rst index 19bd75973b6..afbbdb1b362 100644 --- a/book/service_container.rst +++ b/book/service_container.rst @@ -79,7 +79,7 @@ you need it:: $mailer = new Mailer('sendmail'); $mailer->send('ryan@foobar.net', ...); -This is easy enough. The imaginary ``Mailer`` class allows us to configure +This is easy enough. The imaginary ``Mailer`` class allows you to configure the method used to deliver the email messages (e.g. ``sendmail``, ``smtp``, etc). But what if you wanted to use the mailer service somewhere else? You certainly don't want to repeat the mailer configuration *every* time you need to use @@ -578,7 +578,7 @@ This approach is fine, but what if you decide later that the ``NewsletterManager class needs a second or third constructor argument? What if you decide to refactor our code and rename the class? In both cases, you'd need to find every place where the ``NewsletterManager`` is instantiated and modify it. Of course, -the service container gives us a much more appealing option: +the service container gives you a much more appealing option: .. configuration-block:: diff --git a/components/console/introduction.rst b/components/console/introduction.rst index 73e82cf118e..475a39fab5e 100755 --- a/components/console/introduction.rst +++ b/components/console/introduction.rst @@ -23,7 +23,7 @@ You can install the component in many different ways: Creating a basic Command ------------------------ -To make a console command to greet us from the command line, create ``GreetCommand.php`` +To make a console command to greet you from the command line, create ``GreetCommand.php`` and add the following to it:: namespace Acme\DemoBundle\Command; @@ -439,4 +439,4 @@ Learn More! * :doc:`/components/console/usage` * :doc:`/components/console/single_command_tool` -.. _Packagist: https://packagist.org/packages/symfony/console \ No newline at end of file +.. _Packagist: https://packagist.org/packages/symfony/console diff --git a/components/dom_crawler.rst b/components/dom_crawler.rst index fac665deacd..2daf75dfe33 100644 --- a/components/dom_crawler.rst +++ b/components/dom_crawler.rst @@ -179,7 +179,7 @@ Links To find a link by name (or a clickable image by its ``alt`` attribute), use the ``selectLink`` method on an existing crawler. This returns a Crawler -instance with just the selected link(s). Calling ``link()`` gives us a special +instance with just the selected link(s). Calling ``link()`` gives you a special :class:`Symfony\\Component\\DomCrawler\\Link` object:: $linksCrawler = $crawler->selectLink('Go elsewhere...'); @@ -319,4 +319,4 @@ directly:: $crawler = $client->submit($form); .. _`Goutte`: https://github.com/fabpot/goutte -.. _Packagist: https://packagist.org/packages/symfony/dom-crawler \ No newline at end of file +.. _Packagist: https://packagist.org/packages/symfony/dom-crawler diff --git a/contributing/code/conventions.rst b/contributing/code/conventions.rst index 3e8fa8db0e5..1572e68cf34 100644 --- a/contributing/code/conventions.rst +++ b/contributing/code/conventions.rst @@ -32,7 +32,7 @@ is a main relation: * a ``CookieJar`` has many ``Cookie`` objects; * a Service ``Container`` has many services and many parameters (as services - is the main relation, we use the naming convention for this relation); + is the main relation, the naming convention is used for this relation); * a Console ``Input`` has many arguments and many options. There is no "main" relation, and so the naming convention does not apply. @@ -72,7 +72,7 @@ must be used instead (where ``XXX`` is the name of the related thing): .. note:: - While "setXXX" and "replaceXXX" are very similar, there is one notable - difference: "setXXX" may replace, or add new elements to the relation. + While "setXXX" and "replaceXXX" are very similar, there is one notable + difference: "setXXX" may replace, or add new elements to the relation. "replaceXXX", on the other hand, cannot add new elements. If an unrecognized key as passed to "replaceXXX" it must throw an exception. diff --git a/contributing/code/patches.rst b/contributing/code/patches.rst index adba1c5bf9c..9791c24b666 100644 --- a/contributing/code/patches.rst +++ b/contributing/code/patches.rst @@ -29,7 +29,7 @@ Set up your user information with your real name and a working email address: .. tip:: - If you are new to Git, we highly recommend you to read the excellent and + If you are new to Git, you are highly recommended to read the excellent and free `ProGit`_ book. .. tip:: diff --git a/contributing/documentation/overview.rst b/contributing/documentation/overview.rst index 3d7056dc19e..dee4e37d570 100644 --- a/contributing/documentation/overview.rst +++ b/contributing/documentation/overview.rst @@ -26,12 +26,12 @@ then clone your fork: $ git clone git://github.com/YOURUSERNAME/symfony-docs.git Consistent with Symfony's source code, the documentation repository is split into -three branches: ``2.0`` for the current Symfony 2.0.x release, ``2.1`` for the -current Symfony 2.1.x release and ``master`` as the development branch for +three branches: ``2.0`` for the current Symfony 2.0.x release, ``2.1`` for the +current Symfony 2.1.x release and ``master`` as the development branch for upcoming releases. Unless you're documenting a feature that's new to Symfony 2.1, your changes -should always be based on the 2.0 branch instead of the master branch. To do +should always be based on the 2.0 branch instead of the master branch. To do this checkout the 2.0 branch before the next step: .. code-block:: bash @@ -52,7 +52,7 @@ the ``symfony-docs`` ``master`` branch. .. image:: /images/docs-pull-request.png :align: center -If you have made your changes based on the 2.0 branch then you need to change +If you have made your changes based on the 2.0 branch then you need to change the base branch to be 2.0 on the preview page: .. image:: /images/docs-pull-request-change-base.png @@ -61,7 +61,7 @@ the base branch to be 2.0 on the preview page: .. note:: All changes made to the 2.0 branch will be merged into 2.1 which in turn will be - merged into the master branch for the next release on a weekly basis. + merged into the master branch for the next release on a weekly basis. GitHub covers the topic of `pull requests`_ in detail. @@ -73,9 +73,9 @@ GitHub covers the topic of `pull requests`_ in detail. .. tip:: Please be patient. It can take from 15 minutes to several days for your changes - to appear on the symfony.com website after the documentation team merges your - pull request. You can check if your changes have introduced some markup issues - by going to the `Documentation Build Errors`_ page (it is updated each French + to appear on the symfony.com website after the documentation team merges your + pull request. You can check if your changes have introduced some markup issues + by going to the `Documentation Build Errors`_ page (it is updated each French night at 3AM when the server rebuilds the documentation). Standards @@ -88,19 +88,19 @@ look and feel familiar, you should follow these rules: as well as the `Twig Coding Standards`_; * Each line should break approximately after the first word that crosses the 72nd character (so most lines end up being 72-78 lines); -* When we fold one or more lines of code, we place ``...`` in a comment at the point +* When you fold one or more lines of code, place ``...`` in a comment at the point of the fold. These comments are: ``// ...`` (php), ``# ...`` (yaml/bash), ``{# ... #}`` (twig), ```` (xml/html), ``; ...`` (ini), ``...`` (text); -* When we fold a part of a line, e.g. a variable value, we put ``...`` (without comment) +* When you fold a part of a line, e.g. a variable value, put ``...`` (without comment) at the place of the fold; * Description of the folded code: (optional) - If we fold several lines: the description of the fold can be placed after the ``...`` - If we fold only part of a line: the description can be placed before the line; + If you fold several lines: the description of the fold can be placed after the ``...`` + If you fold only part of a line: the description can be placed before the line; * If useful, a ``codeblock`` should begin with a comment containing the filename of the file in the code block. Don't place a blank line after this comment, unless the next line is also a comment; * You should put a ``$`` in front of every bash line; -* We prefer the ``::`` shorthand over ``.. code-block:: php`` to begin a PHP +* The ``::`` shorthand is preferred over ``.. code-block:: php`` to begin a PHP code block. An example:: diff --git a/cookbook/console/console_command.rst b/cookbook/console/console_command.rst index 314e0d00ddc..dc6cbd95647 100644 --- a/cookbook/console/console_command.rst +++ b/cookbook/console/console_command.rst @@ -15,7 +15,7 @@ To make the console commands available automatically with Symfony2, create a ``Command`` directory inside your bundle and create a php file suffixed with ``Command.php`` for each command that you want to provide. For example, if you want to extend the ``AcmeDemoBundle`` (available in the Symfony Standard -Edition) to greet us from the command line, create ``GreetCommand.php`` and +Edition) to greet you from the command line, create ``GreetCommand.php`` and add the following to it:: // src/Acme/DemoBundle/Command/GreetCommand.php @@ -93,9 +93,9 @@ should be used instead of :class:`Symfony\\Component\\Console\\Application`:: Getting Services from the Service Container ------------------------------------------- -By using :class:`Symfony\\Bundle\\FrameworkBundle\\Command\\ContainerAwareCommand` -as the base class for the command (instead of the more basic -:class:`Symfony\\Component\\Console\\Command\\Command`), you have access to the +By using :class:`Symfony\\Bundle\\FrameworkBundle\\Command\\ContainerAwareCommand` +as the base class for the command (instead of the more basic +:class:`Symfony\\Component\\Console\\Command\\Command`), you have access to the service container. In other words, you have access to any configured service. For example, you could easily extend the task to be translatable:: diff --git a/cookbook/event_dispatcher/before_after_filters.rst b/cookbook/event_dispatcher/before_after_filters.rst index 7ca34c3013a..bd61d37d2a3 100755 --- a/cookbook/event_dispatcher/before_after_filters.rst +++ b/cookbook/event_dispatcher/before_after_filters.rst @@ -180,7 +180,7 @@ your listener to be called just before any controller is executed. With this configuration, your ``TokenListener`` ``onKernelController`` method will be executed on each request. If the controller that is about to be executed implements ``TokenAuthenticatedController``, token authentication is -applied. This lets us have a "before" filter on any controller that you +applied. This lets you have a "before" filter on any controller that you want. After filters with the ``kernel.response`` Event diff --git a/cookbook/form/dynamic_form_generation.rst b/cookbook/form/dynamic_form_generation.rst index 904ad85f5e8..fa2d0aec552 100644 --- a/cookbook/form/dynamic_form_generation.rst +++ b/cookbook/form/dynamic_form_generation.rst @@ -120,7 +120,7 @@ might look like the following:: // During form creation setData() is called with null as an argument // by the FormBuilder constructor. You're only concerned with when // setData is called with an actual Entity object in it (whether new - // or fetched with Doctrine). This if statement lets us skip right + // or fetched with Doctrine). This if statement lets you skip right // over the null condition. if (null === $data) { return; diff --git a/cookbook/service_container/event_listener.rst b/cookbook/service_container/event_listener.rst index 4ec53df4fcd..1ad40b1106d 100644 --- a/cookbook/service_container/event_listener.rst +++ b/cookbook/service_container/event_listener.rst @@ -11,7 +11,7 @@ component and can be viewed in the :class:`Symfony\\Component\\HttpKernel\\Kerne To hook into an event and add your own custom logic, you have to create a service that will act as an event listener on that event. In this entry, you will create a service that will act as an Exception Listener, allowing -us to modify how exceptions are shown by our application. The ``KernelEvents::EXCEPTION`` +you to modify how exceptions are shown by our application. The ``KernelEvents::EXCEPTION`` event is just one of the core kernel events:: // src/Acme/DemoBundle/Listener/AcmeExceptionListener.php diff --git a/quick_tour/the_architecture.rst b/quick_tour/the_architecture.rst index 21db8c2520c..4a7668bab32 100644 --- a/quick_tour/the_architecture.rst +++ b/quick_tour/the_architecture.rst @@ -147,7 +147,7 @@ a single ``Bundle`` class that describes it:: return $bundles; } -In addition to the ``AcmeDemoBundle`` that we have already talked about, notice +In addition to the ``AcmeDemoBundle`` that was already talked about, notice that the kernel also enables other bundles such as the ``FrameworkBundle``, ``DoctrineBundle``, ``SwiftmailerBundle``, and ``AsseticBundle`` bundle. They are all part of the core framework. @@ -297,8 +297,8 @@ If you follow these conventions, then you can use :doc:`bundle inheritanceredirect($this->generateUrl('_demo_hello', array('name' => 'Lucas'))); -The ``generateUrl()`` is the same method as the ``path()`` function we used in +The ``generateUrl()`` is the same method as the ``path()`` function used in the templates. It takes the route name and an array of parameters as arguments and returns the associated friendly URL. @@ -257,8 +257,8 @@ In this example, the resource will be cached for a day. But you can also use validation instead of expiration or a combination of both if that fits your needs better. -Resource caching is managed by the Symfony2 built-in reverse proxy. But because -caching is managed using regular HTTP cache headers, you can replace the +Resource caching is managed by the Symfony2 built-in reverse proxy. But because +caching is managed using regular HTTP cache headers, you can replace the built-in reverse proxy with Varnish or Squid and easily scale your application. .. note:: @@ -270,8 +270,8 @@ built-in reverse proxy with Varnish or Squid and easily scale your application. Final Thoughts -------------- -That's all there is to it, and I'm not even sure we have spent the full -10 minutes. We briefly introduced bundles in the first part, and all the -features we've learned about so far are part of the core framework bundle. +That's all there is to it, and I'm not even sure you'll have spent the full +10 minutes. You were briefly introduced to bundles in the first part, and all the +features you've learned about so far are part of the core framework bundle. But thanks to bundles, everything in Symfony2 can be extended or replaced. That's the topic of the :doc:`next part of this tutorial`. diff --git a/quick_tour/the_view.rst b/quick_tour/the_view.rst index cc1449d3145..26b01254946 100644 --- a/quick_tour/the_view.rst +++ b/quick_tour/the_view.rst @@ -17,7 +17,7 @@ Getting familiar with Twig .. tip:: - If you want to learn Twig, we highly recommend you to read its official + If you want to learn Twig, it's highly recommended you read its official `documentation`_. This section is just a quick overview of the main concepts. @@ -98,7 +98,7 @@ Decorating Templates -------------------- More often than not, templates in a project share common elements, like the -well-known header and footer. In Symfony2, we like to think about this problem +well-known header and footer. In Symfony2, this problem is thought about differently: a template can be decorated by another one. This works exactly the same as PHP classes: template inheritance allows you to build a base "layout" template that contains all the common elements of your site and diff --git a/reference/configuration/framework.rst b/reference/configuration/framework.rst index 9f53dcbb4ea..df0f8fc401b 100644 --- a/reference/configuration/framework.rst +++ b/reference/configuration/framework.rst @@ -226,8 +226,8 @@ would be ``/images/logo.png?version=5``. is not limited to producing versioned query strings. The pattern receives the asset's original path and version as its first and - second parameters, respectively. Since the asset's path is one parameter, we - cannot modify it in-place (e.g. ``/images/logo-v5.png``); however, we can + second parameters, respectively. Since the asset's path is one parameter, you + cannot modify it in-place (e.g. ``/images/logo-v5.png``); however, you can prefix the asset's path using a pattern of ``version-%%2$s/%%1$s``, which would result in the path ``version-5/images/logo.png``. diff --git a/reference/constraints/Valid.rst b/reference/constraints/Valid.rst index d634d527aef..e14d4077bac 100644 --- a/reference/constraints/Valid.rst +++ b/reference/constraints/Valid.rst @@ -16,7 +16,7 @@ object and all sub-objects associated with it. Basic Usage ----------- -In the following example, we create two classes ``Author`` and ``Address`` +In the following example, you create two classes ``Author`` and ``Address`` that both have constraints on their properties. Furthermore, ``Author`` stores an ``Address`` instance in the ``$address`` property. @@ -115,7 +115,7 @@ an ``Address`` instance in the ``$address`` property. * @Assert\NotBlank */ protected $lastName; - + protected $address; } @@ -125,13 +125,13 @@ an ``Address`` instance in the ``$address`` property. use Symfony\Component\Validator\Mapping\ClassMetadata; use Symfony\Component\Validator\Constraints\NotBlank; use Symfony\Component\Validator\Constraints\MaxLength; - + class Address { protected $street; protected $zipCode; - + public static function loadValidatorMetadata(ClassMetadata $metadata) { $metadata->addPropertyConstraint('street', new NotBlank()); @@ -144,15 +144,15 @@ an ``Address`` instance in the ``$address`` property. use Symfony\Component\Validator\Mapping\ClassMetadata; use Symfony\Component\Validator\Constraints\NotBlank; use Symfony\Component\Validator\Constraints\MinLength; - + class Author { protected $firstName; protected $lastName; - + protected $address; - + public static function loadValidatorMetadata(ClassMetadata $metadata) { $metadata->addPropertyConstraint('firstName', new NotBlank()); @@ -192,7 +192,7 @@ property. class Author { /* ... */ - + /** * @Assert\Valid */ @@ -204,11 +204,11 @@ property. // src/Acme/HelloBundle/Author.php use Symfony\Component\Validator\Mapping\ClassMetadata; use Symfony\Component\Validator\Constraints\Valid; - + class Author { protected $address; - + public static function loadValidatorMetadata(ClassMetadata $metadata) { $metadata->addPropertyConstraint('address', new Valid()); diff --git a/reference/forms/types/collection.rst b/reference/forms/types/collection.rst index 9c69bc82903..dd2fca2d3df 100644 --- a/reference/forms/types/collection.rst +++ b/reference/forms/types/collection.rst @@ -51,11 +51,11 @@ The simplest way to render this is all at once: .. configuration-block:: .. code-block:: jinja - + {{ form_row(form.emails) }} .. code-block:: php - + row($form['emails']) ?> A much more flexible method would look like this: @@ -63,7 +63,7 @@ A much more flexible method would look like this: .. configuration-block:: .. code-block:: html+jinja - + {{ form_label(form.emails) }} {{ form_errors(form.emails) }} @@ -80,7 +80,7 @@ A much more flexible method would look like this: label($form['emails']) ?> errors($form['emails']) ?> - + - + Add another email - + {# ... #} @@ -191,7 +191,7 @@ you need is the JavaScript: is automatically available on the ``data-prototype`` attribute of the element (e.g. ``div`` or ``table``) that surrounds your collection. The only difference is that the entire "form row" is rendered for you, meaning - you wouldn't have to wrap it in any container element like we've done + you wouldn't have to wrap it in any container element as was done above. Field Options @@ -294,11 +294,11 @@ collection field: .. configuration-block:: .. code-block:: jinja - + {{ form_row(form.emails.vars.prototype) }} .. code-block:: php - + row($form['emails']->get('prototype')) ?> Note that all you really need is the "widget", but depending on how you're @@ -330,4 +330,4 @@ error_bubbling .. _reference-form-types-by-reference: -.. include:: /reference/forms/types/options/by_reference.rst.inc \ No newline at end of file +.. include:: /reference/forms/types/options/by_reference.rst.inc diff --git a/reference/forms/types/options/by_reference.rst.inc b/reference/forms/types/options/by_reference.rst.inc index 6c0f55f5648..0157ac50417 100644 --- a/reference/forms/types/options/by_reference.rst.inc +++ b/reference/forms/types/options/by_reference.rst.inc @@ -8,7 +8,7 @@ to be called on the underlying object. In some cases, however, ``setName`` may *not* be called. Setting ``by_reference`` ensures that the setter is called in all cases. -To understand this further, let's look at a simple example:: +To explain this further, here's a simple example:: $builder = $this->createFormBuilder($article); $builder @@ -28,7 +28,7 @@ when you call ``bindRequest`` on the form:: Notice that ``setAuthor`` is not called. The author is modified by reference. -If we set ``by_reference`` to false, binding looks like this:: +If you set ``by_reference`` to false, binding looks like this:: $article->setTitle('...'); $author = $article->getAuthor(); @@ -42,4 +42,4 @@ call the setter on the parent object. Similarly, if you're using the :doc:`collection` form type where your underlying collection data is an object (like with Doctrine's ``ArrayCollection``), then ``by_reference`` must be set to ``false`` if you -need the setter (e.g. ``setAuthors``) to be called. \ No newline at end of file +need the setter (e.g. ``setAuthors``) to be called.