Skip to content

Added last missing override section #2990

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 5, 2013
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions cookbook/bundles/inheritance.rst
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,8 @@ original method, and change its functionality::
the controller using the standard ``FOSUserBundle:Registration:register``
syntax in routes and templates. This is the best practice.

Overriding Resources: Templates, Routing, Validation, etc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Overriding Resources: Templates, Routing, etc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Most resources can also be overridden, simply by creating a file in the same
location as your parent bundle.
Expand All @@ -86,7 +86,7 @@ you can create your own file in the same location of ``AcmeUserBundle``.
Symfony will ignore the file that lives inside the ``FOSUserBundle`` entirely,
and use your file instead.

The same goes for routing files, validation configuration and other resources.
The same goes for routing files and some other resources.

.. note::

Expand All @@ -97,8 +97,9 @@ The same goes for routing files, validation configuration and other resources.

.. caution::

Translation files do not work in the same way as described above. Read
:ref:`override-translations` if you want to learn how to override
translations.
Translation and validation files do not work in the same way as described
above. Read ":ref:`override-translations`" if you want to learn how to
override translations and see ":ref:`override-validation`" for tricks to
override the validation.

.. _`FOSUserBundle`: https://github.com/friendsofsymfony/fosuserbundle
50 changes: 49 additions & 1 deletion cookbook/bundles/override.rst
Original file line number Diff line number Diff line change
Expand Up @@ -117,10 +117,58 @@ rather than::

$builder->add('name', new CustomType());

.. _override-validation:

Validation metadata
-------------------

In progress...
Symfony loads all validation configuration files from every bundle and
combines them into one validation metadata tree. This means you are able to
add new constraints to a property, but you cannot override it.

To override this, the 3th party bundle needs to have configuration for
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3rd

:ref:`validation groups <book-validation-validation-groups>`. For instance,
the FOSUserBundle has this configuration. To create your own validation, add
the constraints to a new validation group:

.. configuration-block::

.. code-block:: yaml

# src/Acme/UserBundle/Resources/config/validation.yml
Fos\UserBundle\Model\User:
properties:
plainPassword:
- NotBlank:
groups: [AcmeValidation]
- Length:
min: 6
minMessage: fos_user.password.short
groups: [AcmeValidation]

.. code-block:: xml

<!-- src/Acme/UserBundle/Resources/config/validation.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<constraint-mapping xmlns="http://symfony.com/schema/dic/constraint-mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping http://symfony.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd">
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe wrap this line?


<class name="Fos\UserBundle\Model\User">
<property name="password">
<constraint name="Length">
<option name="min">6</option>
<option name="minMessage">fos_user.password.short</option>
<option name="groups">
<value>AcmeValidation</value>
</option>
</constraint>
</property>
</class>
</constraint-mapping>

Now, update the FosUserBundle configuration, so it uses your validation groups
instead of the original ones.

.. _override-translations:

Expand Down