Skip to content


Subversion checkout URL

You can clone with
Download ZIP

Comparing changes

Choose two branches to see what's changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
  • 5 commits
  • 4 files changed
  • 0 commit comments
  • 4 contributors
Commits on Jul 29, 2012
@webmozart webmozart [Form] Completely decoupled CoreExtension from HttpFoundation f768e90
@webmozart webmozart [Form] Fixed ResolvedFormType to really be replaceable df8fc97
Commits on Jul 31, 2012
@bamarni bamarni fixed typo 1837e0d
@vicb vicb [Routing] Add an interface for configuring strict_parameters 61fa98c
@fabpot fabpot merged branch vicb/lenient_generator (PR #5114)

03bbaaf [Routing] Add an interface for configuring strict_parameters


[RFC][Routing] Add an interface for configuring strict_parameters

This is a proposal to fix #4697 (related to #4592).

The main point left to discuss was the name of the interface, which is now `LenientInterface`. We could change the name to anything else is someone has a better idea.

@stof @Tobion what do you think ?


by stof at 2012-07-30T16:34:20Z

@vicb I already said I had no idea to name it, and it has not changed. :)
So let's wait for other people to see if they have a better idea


by breerly at 2012-07-30T16:38:38Z

Maybe `PermissibleInterface` or `PermissiveInterface`.


by Partugal at 2012-07-30T17:00:09Z

`StrictUrlGeneratorInterface`, `StrictParametersInterface` or `StrictInterface`


by pborreli at 2012-07-30T17:04:46Z

:+1: for `PermissiveInterface`


by stof at 2012-07-30T17:07:59Z

yes, because the Router currently can only use this interface to set it to ``not-strict``. It assumes that the url generator is already strict by default (which is probably a bad assumption btw as the base class for the generated generator can be changed)


by pborreli at 2012-07-30T17:09:33Z

@stof thx, got it


by Partugal at 2012-07-30T17:10:03Z

this interface realize setting Strict by setStrictParameters, and get by getStrictParameters, and imho named it by `Strictable` is more logic


by pborreli at 2012-07-30T17:11:07Z

@Partugal let's try to find an english term :)


by Partugal at 2012-07-30T17:11:31Z



by breerly at 2012-07-30T17:15:23Z

@Partugal I like using "able" in interface names because it describes a behavior instead of a noun. This type of naming makes following the Interface Segregation Principle easy to follow. Good work.


by vicb at 2012-07-30T18:24:26Z

As explained by @stof I did not consider `StrictInterface` because as of now the interface is used to disabled the strict bevahior (which is enabled by default).

I am not satisfied with `PermissiveInterface` / `LenientInterface` because implementing this interface does not mean that the generator will be permissive but only that the behavior is configurable - yes I did consider `Configurable` but the term is a too vague.


by breerly at 2012-07-30T18:35:45Z

I see. Perhaps ```StrictConfigurableInterface``` would do the trick.


by Tobion at 2012-07-30T21:02:21Z

I think renaming strict_parameters to `strict_requirements` is the way to go because it determines how requirements are handled when generating a URL. Also we should allow another option:
strict_requirements = true: throw exception for mismatching requirements
strict_requirements = null: return null as URL for mismatching requirements and log it.
strict_requirements = false: return the URL with the given parameters without checking the requirements and don't log it.
(Maybe use constants for these).
The Interface I would then call `ConfigurableRequirementsInterface` or `RequirementsHandlingInterface`.


by vicb at 2012-07-31T07:23:24Z

Thanks all for the feeback, this is what is now implemented:

- A `ConfigurableRequirementsInterface` that should be implemented by generators that can be configure not to throw an exception when the parameters do not match the requirements,
- The interface has two methods: `setStrictRequirements()` and `isStrictRequirements()`,
- `setStrictRequirements()` always gets called to configure the generator (whatever the option value is)

Note: The Router option name has not changed (i.e. `strict_parameters`)

Does that fit everyone ?


by vicb at 2012-07-31T07:39:22Z

So the option name is now consistent (`strict_requirements`) with the interface. We should sync the change [in the standard edition]( if we agree to merge this.


by fabpot at 2012-07-31T07:51:47Z

@vicb you forgot to rename the property in `UrlGenerator` as @stof mentioned above.


by vicb at 2012-07-31T07:59:57Z

@fabpot fixed. If the code is ok, I'll squash the commits and open a PR on symfony-standard
2  DependencyInjection/Configuration.php
@@ -169,7 +169,7 @@ private function addRouterSection(ArrayNodeDefinition $rootNode)
- ->scalarNode('strict_parameters')
+ ->scalarNode('strict_requirements')
'set to false to disable exceptions when a route is '.
'generated with invalid parameters (and return null instead)'
2  DependencyInjection/FrameworkExtension.php
@@ -246,7 +246,7 @@ private function registerRouterConfiguration(array $config, ContainerBuilder $co
$router = $container->findDefinition('router.default');
$argument = $router->getArgument(2);
- $argument['strict_parameters'] = $config['strict_parameters'];
+ $argument['strict_requirements'] = $config['strict_requirements'];
if (isset($config['type'])) {
$argument['resource_type'] = $config['type'];
29 Resources/config/form.xml
@@ -5,47 +5,45 @@
- <parameter key="form.extension.class">Symfony\Component\Form\Extension\DependencyInjection\DependencyInjectionExtension</parameter>
+ <parameter key="form.resolved_type_factory.class">Symfony\Component\Form\ResolvedFormTypeFactory</parameter>
<parameter key="form.registry.class">Symfony\Component\Form\FormRegistry</parameter>
<parameter key="form.factory.class">Symfony\Component\Form\FormFactory</parameter>
+ <parameter key="form.extension.class">Symfony\Component\Form\Extension\DependencyInjection\DependencyInjectionExtension</parameter>
<parameter key="form.type_guesser.validator.class">Symfony\Component\Form\Extension\Validator\ValidatorTypeGuesser</parameter>
+ <!-- ResolvedFormTypeFactory -->
+ <service id="form.resolved_type_factory" class="%form.resolved_type_factory.class%" />
<!-- FormRegistry -->
<service id="form.registry" class="%form.registry.class%">
<argument type="collection">
We don't need to be able to add more extensions.
* more types can be registered with the form.type tag
+ * more type extensions can be registered with the form.type_extension tag
* more type_guessers can be registered with the form.type.type_guesser tag
<argument type="service" id="form.extension" />
+ <argument type="service" id="form.resolved_type_factory" />
<!-- FormFactory -->
<service id="form.factory" class="%form.factory.class%">
<argument type="service" id="form.registry" />
+ <argument type="service" id="form.resolved_type_factory" />
<!-- DependencyInjectionExtension -->
<service id="form.extension" class="%form.extension.class%" public="false">
<argument type="service" id="service_container" />
- <!--
- All services with tag "form.type" are inserted here by
- InitFormsPass
- -->
+ <!-- All services with tag "form.type" are inserted here by FormPass -->
<argument type="collection" />
- <!--
- All services with tag "form.type_extension" are inserted here by
- InitFormsPass
- -->
+ <!-- All services with tag "form.type_extension" are inserted here by FormPass -->
<argument type="collection" />
- <!--
- All services with tag "form.type_guesser" are inserted here by
- InitFormsPass
- -->
+ <!-- All services with tag "form.type_guesser" are inserted here by FormPass -->
<argument type="collection" />
@@ -138,6 +136,11 @@
<tag name="form.type" alias="url" />
+ <!-- FormTypeHttpFoundationExtension -->
+ <service id="form.type_extension.form.http_foundation" class="Symfony\Component\Form\Extension\HttpFoundation\Type\FormTypeHttpFoundationExtension">
+ <tag name="form.type_extension" alias="form" />
+ </service>
<!-- FormTypeValidatorExtension -->
<service id="form.type_extension.form.validator" class="Symfony\Component\Form\Extension\Validator\Type\FormTypeValidatorExtension">
<tag name="form.type_extension" alias="form" />
2  Routing/Router.php
@@ -20,7 +20,7 @@
use Symfony\Component\DependencyInjection\Exception\RuntimeException;
- * This Router only creates the Loader only when the cache is empty.
+ * This Router creates the Loader only when the cache is empty.
* @author Fabien Potencier <>

No commit comments for this range

Something went wrong with that request. Please try again.