Commit Graph

123 Commits

Author SHA1 Message Date
Kevin Bond
c29958f82f allow null value in fragment handler 2014-01-20 07:30:15 +01:00
Tobias Schultze
111ac18232 unify constructor initialization style throughout symfony 2013-11-11 19:40:07 +01:00
Fabien Potencier
23f12faa53 fixed CS 2013-10-30 09:33:58 +01:00
Fabien Potencier
2cd6e002c7 feature#8957 [HttpFoundation] added a way to override the Request class (fabpot)
This PR was merged into the master branch.

Discussion
----------

[HttpFoundation] added a way to override the Request class

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #7461, #7453
| License       | MIT
| Doc PR        | symfony/symfony-docs#3021

This is an alternative implementation for #7461.

I've also reverted #7381 and #7390 as these changes are not needed anymore.

Todo:

 - [ ] add some tests

Commits
-------

464439d [HttpFoundation] added a way to override the Request class
2013-10-01 07:05:57 +02:00
Fabien Potencier
464439d195 [HttpFoundation] added a way to override the Request class 2013-09-30 22:35:02 +02:00
Giulio De Donato
7d53314b36 [HttpKernel] Fragment Fixed CS 2013-09-19 12:32:30 +02:00
Fabien Potencier
51c6d7696c Merge branch '2.3'
* 2.3:
  fixed phpdoc
  Fix some annotates
  [FrameworkBundle] made sure that the debug event dispatcher is used everywhere
  [HttpKernel] remove unneeded strtoupper
  updated the composer install command to reflect changes in Composer

Conflicts:
	src/Symfony/Component/Serializer/Encoder/XmlEncoder.php
2013-09-19 11:47:34 +02:00
Fabien Potencier
88cef41560 Merge branch '2.2' into 2.3
* 2.2:
  Fix some annotates
  [FrameworkBundle] made sure that the debug event dispatcher is used everywhere
  [HttpKernel] remove unneeded strtoupper
  updated the composer install command to reflect changes in Composer

Conflicts:
	src/Symfony/Component/Console/Application.php
	src/Symfony/Component/Console/Command/Command.php
	src/Symfony/Component/Console/Input/InputDefinition.php
	src/Symfony/Component/CssSelector/Node/CombinedSelectorNode.php
	src/Symfony/Component/Form/Form.php
	src/Symfony/Component/HttpKernel/Debug/ErrorHandler.php
	src/Symfony/Component/HttpKernel/DependencyInjection/RegisterListenersPass.php
	src/Symfony/Component/HttpKernel/Tests/DependencyInjection/RegisterListenersPassTest.php
	src/Symfony/Component/Locale/Locale.php
	src/Symfony/Component/Locale/README.md
	src/Symfony/Component/Locale/Stub/DateFormat/FullTransformer.php
2013-09-19 11:45:20 +02:00
bronze1man
de39bd5433 Fix some annotates 2013-09-19 11:36:05 +02:00
Fabien Potencier
e0ef289363 fixed typoss 2013-09-12 12:56:56 +02:00
Fabien Potencier
95483e518d Merge branch '2.3'
* 2.3:
  Fixed docblock in UserInterface::getSalt()
  [Process] Fix #8970 : read output once the process is finished, enable pipe tests on Windows
  [DoctrineBridge] Improved test coverage of EntityChoiceList
  [DoctrineBridge] Improved test coverage of EntityChoiceList
  [Form] Improved test coverage of ChoiceList classes
  [Form] Fixed expanded choice field to be marked invalid when unknown choices are submitted
  [Form] Fixed ChoiceList::get*By*() methods to preserve order and array keys
  [Form] Removed usage of the ChoiceList::getIndicesFor*() methods where they don't offer any performance benefit
  [Form] Improved test coverage of ChoiceList classes
  [Form] Fixed expanded choice field to be marked invalid when unknown choices are submitted
  [Form] Fixed ChoiceList::get*By*() methods to preserve order and array keys
  [Form] Removed usage of the ChoiceList::getIndicesFor*() methods where they don't offer any performance benefit
  Removed duplicate annotation
  [HttpKernel] made code more reliable
  [HttpFoundation] fixed regression in the way the request format is handled for duplicated requests (closes #8917)
  [HttpKernel] fixer HInclude src (closes #8951)
  Fixed escaping of service identifiers in configuration

Conflicts:
	src/Symfony/Bridge/Doctrine/Tests/Form/ChoiceList/GenericEntityChoiceListTest.php
	src/Symfony/Bridge/Doctrine/Tests/Form/Type/EntityTypeTest.php
	src/Symfony/Component/HttpKernel/Tests/Fragment/HIncludeFragmentRendererTest.php
2013-09-10 22:30:47 +02:00
Fabien Potencier
eb9f76d5ba Merge branch '2.2' into 2.3
* 2.2:
  Fixed docblock in UserInterface::getSalt()
  [Process] Fix #8970 : read output once the process is finished, enable pipe tests on Windows
  [DoctrineBridge] Improved test coverage of EntityChoiceList
  [Form] Improved test coverage of ChoiceList classes
  [Form] Fixed expanded choice field to be marked invalid when unknown choices are submitted
  [Form] Fixed ChoiceList::get*By*() methods to preserve order and array keys
  [Form] Removed usage of the ChoiceList::getIndicesFor*() methods where they don't offer any performance benefit
  [HttpKernel] made code more reliable

Conflicts:
	src/Symfony/Bridge/Doctrine/Tests/Form/ChoiceList/EntityChoiceListTest.php
	src/Symfony/Component/Form/Extension/Core/ChoiceList/ChoiceListInterface.php
	src/Symfony/Component/Form/Extension/Core/EventListener/FixRadioInputListener.php
	src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php
	src/Symfony/Component/Form/Form.php
	src/Symfony/Component/Form/Tests/Extension/Core/Type/ChoiceTypeTest.php
	src/Symfony/Component/Process/Process.php
	src/Symfony/Component/Process/Tests/AbstractProcessTest.php
2013-09-10 22:24:28 +02:00
Fabien Potencier
dc762e10d7 [HttpKernel] made code more reliable 2013-09-08 19:54:19 +02:00
Fabien Potencier
a010ed4721 Merge branch '2.2' into 2.3
* 2.2:
  [HttpFoundation] fixed regression in the way the request format is handled for duplicated requests (closes #8917)
  [HttpKernel] fixer HInclude src (closes #8951)
  Fixed escaping of service identifiers in configuration
2013-09-08 18:12:21 +02:00
Fabien Potencier
49f50271d4 [HttpKernel] fixer HInclude src (closes #8951) 2013-09-08 09:24:10 +02:00
Fabien Potencier
b1a062d232 moved RequestStack to HttpFoundation and removed RequestContext 2013-09-08 07:38:03 +02:00
Fabien Potencier
93e60eaeab [HttpKernel] modified listeners to be BC with Symfony <2.4 2013-09-07 21:48:44 +02:00
Fabien Potencier
018b71936f [HttpKernel] tweaked the code 2013-09-07 21:43:50 +02:00
Benjamin Eberlei
c55f1ea8af added a RequestStack class 2013-09-07 21:43:49 +02:00
Fabien Potencier
e838bf04ca Merge branch '2.3'
* 2.3:
  [Security] fixed some phpdoc
  Fixed PHPDoc Blocks
  optimized circular reference checker
  fixed misleading doc block
  [HttpKernel] changed fragment URLs to be relative by default (closes #8458)

Conflicts:
	src/Symfony/Component/HttpKernel/Fragment/RoutableFragmentRenderer.php
	src/Symfony/Component/HttpKernel/Tests/Fragment/RoutableFragmentRendererTest.php
2013-08-30 15:15:50 +02:00
Fabien Potencier
e8e5a3a2e5 Merge branch '2.2' into 2.3
* 2.2:
  [Security] fixed some phpdoc
  Fixed PHPDoc Blocks
  optimized circular reference checker
  [HttpKernel] changed fragment URLs to be relative by default (closes #8458)
2013-08-30 15:10:46 +02:00
Fabien Potencier
91234cd89a [HttpKernel] changed fragment URLs to be relative by default (closes #8458) 2013-08-29 07:21:07 +02:00
Pascal Borreli
d37404ccf7 Fixed typos 2013-08-24 07:54:37 +01:00
Fabien Potencier
c3abd0c988 Merge branch '2.3'
* 2.3:
  fixed request format when forwarding a request
  [HttpKernel] added a comment to warn about possible inconsistencies
  added a functional test for locale handling in sub-requests
  Fixed issue #6932 - Inconsistent locale handling in subrequests
  fixed locale of sub-requests when explicitely set by the developer (refs #8821)

Conflicts:
	src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php
	src/Symfony/Component/HttpKernel/Fragment/RoutableFragmentRenderer.php
	src/Symfony/Component/HttpKernel/Tests/Fragment/RoutableFragmentRendererTest.php
2013-08-23 17:34:04 +02:00
Fabien Potencier
6610a7c80e Merge branch '2.2' into 2.3
* 2.2:
  fixed request format when forwarding a request
  [HttpKernel] added a comment to warn about possible inconsistencies
  added a functional test for locale handling in sub-requests
  Fixed issue #6932 - Inconsistent locale handling in subrequests
  fixed locale of sub-requests when explicitely set by the developer (refs #8821)

Conflicts:
	src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php
2013-08-23 17:31:47 +02:00
Fabien Potencier
7117328bd7 [HttpKernel] added a comment to warn about possible inconsistencies 2013-08-22 09:01:15 +02:00
Charles Sarrazin
05fdb12ad9 Fixed issue #6932 - Inconsistent locale handling in subrequests
The fix consists in passing the locale in the controller reference,
inside the routablefragment renderer.
2013-08-22 08:57:23 +02:00
Fabien Potencier
b3c31593c7 fixed locale of sub-requests when explicitely set by the developer (refs #8821) 2013-08-22 08:48:41 +02:00
Fabien Potencier
167245c9c7 Merge branch '2.3'
* 2.3:
  [Locale] fixed build-data exit code in case of an error
  fixed request format of sub-requests when explicitely set by the developer (closes #8787)
  Sets _format attribute only if it wasn't set previously by the user.
  Exclude little words of 'ee' to 'oo' plural transformation
  fixed the format of the request used to render an exception
  Fix typo in the check_path validator
  added a missing use statement (closes #8808)
  fix for Process:isSuccessful()
  Include untrusted host in the exception message

Conflicts:
	src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php
	src/Symfony/Component/HttpKernel/Fragment/InlineFragmentRenderer.php
2013-08-22 08:44:20 +02:00
Fabien Potencier
8e1cb3e3ca Merge branch '2.2' into 2.3
* 2.2:
  [Locale] fixed build-data exit code in case of an error
  fixed request format of sub-requests when explicitely set by the developer (closes #8787)
  Sets _format attribute only if it wasn't set previously by the user.
  Exclude little words of 'ee' to 'oo' plural transformation
  fixed the format of the request used to render an exception
  Fix typo in the check_path validator
  added a missing use statement (closes #8808)
  fix for Process:isSuccessful()

Conflicts:
	UPGRADE-3.0.md
	src/Symfony/Component/Locale/Resources/data/build-data.php
2013-08-22 08:42:25 +02:00
Fabien Potencier
9bb7a3ddcb fixed request format of sub-requests when explicitely set by the developer (closes #8787) 2013-08-22 07:46:12 +02:00
David Marín
fa35597755 Sets _format attribute only if it wasn't set previously by the user.
Fixes #8787
2013-08-22 07:45:36 +02:00
Fabien Potencier
a67f5d03d1 Merge branch '2.3'
* 2.3:
  [Process] Revert change
  [Process] Fix #8746 : slowness added in unit tests since #8741
  [Process] Fix #8742 : Signal-terminated processes are not successful
  corrected English grammar (s/does not exists/does not exist)
  [Process] Add more precision to Process::stop timeout
  [Process] Avoid zombie process in case of unit tests failure
  [Process] Fix #8739
  [Process] Add failing test for #8739
  [Process] Fix CS
  [TwigBridge] removed superflous ; when rendering form_enctype() (closes #8660)
  Fixed documentation grammar for AuthenticationManagerInterface::authenticate()
  [Validator] fixed the wrong isAbstract() check against the class (fixed #8589)
  [TwigBridge] Prevent code extension to display warning
  Fix internal sub-request creation
  [FrameworkBundle] made code more generic
  [Form] Moved auto_initialize option to the BaseType
  Use strstr instead of strpos
  Make sure ContextErrorException is loaded during compile time errors
  Fix empty process argument escaping on Windows
  Ignore null value in comparison validators

Conflicts:
	src/Symfony/Component/Debug/Tests/ErrorHandlerTest.php
	src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php
	src/Symfony/Component/Process/Process.php
2013-08-14 15:08:25 +02:00
Fabien Potencier
09f727b1f1 changed the ESI fragment renderer to be always registered 2013-08-13 11:17:13 +02:00
Dmitrii Chekaliuk
96aec0f49c Fix internal sub-request creation
Fixes the creation of internal sub-request in case of disabled trusted
client-ip header
2013-08-11 19:29:22 +02:00
Fabien Potencier
89b42ba262 Merge branch '2.3'
* 2.3:
  [HttpKernel] Added a missing use statement.
  [Process] Increased the timeout in a test to prevent random failures when travis is under a heavy load.
2013-08-03 07:57:41 +02:00
Jakub Zalas
ccb497a553 [HttpKernel] Added a missing use statement.
Broken by #8572.
2013-08-03 00:18:34 +01:00
Fabien Potencier
4ee3d7f11a Merge branch '2.3'
* 2.3:
  moved some fixed dep versions from 2.2.* to ~2.2 (refs #8613)
  [HttpKernel] added a missing dep for dev
  [Form] fixed wrong call to setTimeZone() (closes #8644)
  Fix issue with \DateTimeZone::UTC / 'UTC' for PHP 5.4
  [Form] Fixed patched forms to be valid even if children are not submitted
  Revert "[Form] Fix of "PATCH'ed forms are never valid""
  [Form] Fixed: If a form is not present in a request, it is not automatically submitted
  Fixes link indices
  [Form] Removed the "disabled" attribute from the placeholder option in select fields due to problems with the BlackBerry 10 browser
  Revert "[Form] Remove "value" attribute on empty_value option"
  [routing] added ability for apache matcher to handle array values
  removed dead code and fixed CS
  [Validator] fixed StaticMethodLoader trying to invoke methods of abstract classes (closes #8589)
2013-08-02 22:53:46 +02:00
Fabien Potencier
64535bbcb2 Merge branch '2.2' into 2.3
* 2.2:
  [HttpKernel] added a missing dep for dev
  [Form] fixed wrong call to setTimeZone() (closes #8644)
  Fix issue with \DateTimeZone::UTC / 'UTC' for PHP 5.4
  [Form] Removed the "disabled" attribute from the placeholder option in select fields due to problems with the BlackBerry 10 browser
  [routing] added ability for apache matcher to handle array values
  removed dead code and fixed CS
  [Validator] fixed StaticMethodLoader trying to invoke methods of abstract classes (closes #8589)

Conflicts:
	src/Symfony/Bundle/TwigBundle/TokenParser/RenderTokenParser.php
	src/Symfony/Component/Form/FormConfigBuilder.php
	src/Symfony/Component/HttpKernel/composer.json
	src/Symfony/Component/Validator/Tests/GraphWalkerTest.php
2013-08-02 22:53:38 +02:00
Fabien Potencier
7d581471ce removed dead code and fixed CS 2013-07-28 20:26:16 +02:00
Pascal Borreli
6e35963fa5 Fixed CS 2013-07-21 13:38:54 +01:00
Fabien Potencier
76b6449c16 merged branch fabpot/fragments-with-non-scalars (PR #8437)
This PR was merged into the master branch.

Discussion
----------

[HttpKernel] changed the fragment handler to explicitely disallow non-scalar in generated URIs (refs #8263)

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #8263
| License       | MIT
| Doc PR        | n/a

When using the `render()` function in Twig with a `controller()` reference, the attributes can contain non-scalar. That's fine for the inline strategy, but it cannot work for other strategies as it then involves a proper HTTP request.

So, this PR properly throw an exception in such situations to avoid difficult to find bugs.

Commits
-------

43ce368 [HttpKernel] added a unit test to demonstrate that passing objects works for inline controllers
70f3399 [HttpKernel] changed the fragment handler to explicitely disallow non-scalar in generated URIs (refs #8263)
2013-07-15 14:15:29 +02:00
Fabien Potencier
43ce368dea [HttpKernel] added a unit test to demonstrate that passing objects works for inline controllers 2013-07-12 09:33:20 +02:00
Fabien Potencier
c2c156835f Merge branch '2.2' into 2.3
* 2.2:
  Reverts JSON_NUMERIC_CHECK
  Just a Typo
  [Yaml] removed wrong comment removal inside a string block
  Fixing configuration validation error messages.
  [HtppKernel] fixed inline fragment renderer
  fixed inline fragment renderer
  ProgressHelper shows percentage complete.
  Comment fixed: RedrawFrequency is measured in steps.
  fix handling of a default 'template' as a string

Conflicts:
	src/Symfony/Component/Console/Helper/ProgressHelper.php
	src/Symfony/Component/Console/Tests/Helper/ProgressHelperTest.php
	src/Symfony/Component/HttpKernel/Tests/Fragment/HIncludeFragmentRendererTest.php
	src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php
2013-07-11 21:36:36 +02:00
Fabien Potencier
70f3399f7e [HttpKernel] changed the fragment handler to explicitely disallow non-scalar in generated URIs (refs #8263) 2013-07-10 15:58:48 +02:00
Jean-François Simon
06b69b859a fixed inline fragment renderer 2013-07-10 09:34:46 +02:00
Fabien Potencier
2d61ebf26b merged branch lsmith77/fix_include_default_text (PR #8445)
This PR was merged into the 2.2 branch.

Discussion
----------

Fix include default text

Bug fix: yes
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: [![Build Status](https://travis-ci.org/lsmith77/symfony.png?branch=fix_include_default_text)](https://travis-ci.org/lsmith77/symfony)
Fixes the following tickets: -
License of the code: MIT

Commits
-------

9d1004b fix handling of a default 'template' as a string
2013-07-08 16:43:11 +02:00
Fabien Potencier
686bbb61c4 Merge branch '2.2' into 2.3
* 2.2:
  Update JsonResponse.php
  [HttpKernel] fixed the inline renderer when passing objects as attributes (closes #7124)
  [WebProfiler] fix content-type parameter
  Replace romaji period characters with Japanese style zenkaku period characters
  Passed the config when building the Configuration in ConfigurableExtension

Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Tests/Functional/Bundle/TestBundle/Resources/config/routing.yml
	src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php
2013-07-08 15:36:15 +02:00
Lukas Kahwe Smith
9d1004b59e fix handling of a default 'template' as a string 2013-07-08 15:32:00 +02:00
Fabien Potencier
82dbaee06d [HttpKernel] fixed the inline renderer when passing objects as attributes (closes #7124) 2013-07-08 11:12:10 +02:00
Fabien Potencier
4c0bfd3313 fixed CS 2013-07-01 14:24:43 +02:00
Fabien Potencier
7ef73b14c6 [HttpKernel] added logging when an inline fragment cannot be rendered and ignore_errors is on 2013-04-22 15:39:53 +02:00
Pascal Borreli
7cfa66159e Fixed PHPDocs 2013-04-21 12:26:17 +00:00
Fabien Potencier
e03e2cd0fa [HttpKernel] optimized previous merge 2013-04-21 09:48:28 +02:00
Fabien Potencier
2f3b33a630 merged branch guilhermeblanco/client_ip_fix (PR #7559)
This PR was squashed before being merged into the master branch (closes #7559).

Discussion
----------

[HttpFoundation] [HttpKernel] Internal sub-requests should have X-Forwarded-For header providing real client IP

This is a better alternative to fix issue highlighted in #7554 and #7557.

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #7554, #7557
| License       | MIT

When dealing with inline fragment renderer, it emulates an internal request by overriding the REMOTE_ADDR on Request. This is true, since conceptually request came from local server.
The problem that this introduces is that overriding the server value, it turns into an impossible state to retrieve the real client ip, only returning the local server IP (which is hardcoded to 127.0.0.1).

This patch takes the same approach as a Varnish call (it behaves the exact same way, reusing all code built for handling client ip handling on sub-requests), populating the X-Forwarded-For header and also making getClientIp smarter by removing possible local IP addresses from being considered as the client IP address.

Commits
-------

773e109 [HttpFoundation] [HttpKernel] Internal sub-requests should have X-Forwarded-For header providing real client IP
2013-04-21 09:39:54 +02:00
Guilherme Blanco
773e109ebf [HttpFoundation] [HttpKernel] Internal sub-requests should have X-Forwarded-For header providing real client IP 2013-04-21 09:39:17 +02:00
Fabien Potencier
1552a16420 Merge branch '2.2'
* 2.2:
  [Config] #7644 add tests for passing number looking attributes as strings
  [HttpFoundation][BrowserKit] fixed path when converting a cookie to a string
  [BrowserKit] removed dead code
  [HttpFoundation] fixed empty domain= in Cookie::__toString()
  fixed detection of secure cookies received over https
  [2.2] Pass ESI header to subrequests
  [Translation] removed an uneeded class property
  [Translation] removed unneeded getter/setter
  [Translator] added additional conversion for encodings other than utf-8
  fixed source messages to accept pluralized messages [Validator][translation][japanese] add messages for new validator
  fix a DI circular reference recognition bug
  [HttpFoundation] fixed the creation of sub-requests under some circumstances for IIS

Conflicts:
	src/Symfony/Component/HttpFoundation/Tests/CookieTest.php
2013-04-20 21:06:06 +02:00
Michel Weimerskirch
af819a7145 [2.2] Pass ESI header to subrequests 2013-04-20 15:53:42 +02:00
Jean-François Simon
670a5028a8 [HttpKernel] added escaping for hx:include tag attributes 2013-03-29 05:29:22 +01:00
Mike Meier
342d08967c Allow to set id + custom attributes to hinclude tag
Squashed commits:
Allow to set an id attribute to hinclude tag
Allow custom attributes on hinclude tag
2013-03-26 09:39:03 +01:00
Fabien Potencier
74f96bfebf merged branch fabpot/contagious-services (PR #7007)
This PR was merged into the master branch.

Discussion
----------

[2.3] [WIP] Synchronized services...

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #5300, #6756
| License       | MIT
| Doc PR        | symfony/symfony-docs#2343

Todo:

 - [x] update documentation
 - [x] find a better name than contagious (synchronized)?

refs #6932, refs #5012

This PR is a proof of concept that tries to find a solution for some problems we have with scopes and services depending on scoped services (mostly the request service in Symfony).

Basically, whenever you want to inject the Request into a service, you have two possibilities:

 * put your own service into the request scope (a new service will be created whenever a sub-request is run, and the service is not available outside the request scope);

 * set the request service reference as non-strict (your service is always available but the request you have depends on when the service is created the first time).

This PR addresses this issue by allowing to use the second option but you service still always has the right Request service (see below for a longer explanation on how it works).

There is another issue that this PR fixes: edge cases and weird behaviors. There are several bug reports about some weird behaviors, and most of the time, this is related to the sub-requests. That's because the Request is injected into several Symfony objects without being updated correctly when leaving the request scope. Let me explain that: when a listener for instance needs the Request object, it can listen to the `kernel.request` event and store the request somewhere. So, whenever you enter a sub-request, the listener will get the new one. But when the sub-request ends, the listener has no way to know that it needs to reset the request to the master one. In practice, that's not really an issue, but let me show you an example of this issue in practice:

 * You have a controller that is called with the English locale;
 * The controller (probably via a template) renders a sub-request that uses the French locale;
 *  After the rendering, and from the controller, you try to generate a URL. Which locale the router will use? Yes, the French locale, which is wrong.

To fix these issues, this PR introduces a new notion in the DIC: synchronized services. When a service is marked as synchronized, all method calls involving this service will be called each time this service is set. When in a scope, methods are also called to restore the previous version of the service when the scope leaves.

If you have a look at the router or the locale listener, you will see that there is now a `setRequest` method that will called whenever the request service changes (because the `Container::set()` method is called or because the service is changed by a scope change).

Commits
-------

17269e1 [DependencyInjection] fixed management of scoped services with an invalid behavior set to null
bb83b3e [HttpKernel] added a safeguard for when a fragment is rendered outside the context of a master request
5d7b835 [FrameworkBundle] added some functional tests
ff9d688 fixed Request management for FragmentHandler
1b98ad3 fixed Request management for LocaleListener
a7b2b7e fixed Request management for RequestListener
0892135 [HttpKernel] ensured that the Request is null when outside of the Request scope
2ffcfb9 [FrameworkBundle] made the Request service synchronized
ec1e7ca [DependencyInjection] added a way to automatically update scoped services
2013-03-23 14:07:03 +01:00
Fabien Potencier
5ff6006fa6 removed deprecated stuff in the fragment sub-framework 2013-03-23 11:46:55 +01:00
Fabien Potencier
bb83b3ea43 [HttpKernel] added a safeguard for when a fragment is rendered outside the context of a master request 2013-03-20 17:13:45 +01:00
Fabien Potencier
ff9d6883bb fixed Request management for FragmentHandler 2013-03-20 17:13:44 +01:00
Jean-François Simon
53cf12b544 replaced new occurences of 'Request::create()' with '::create()' 2013-03-15 13:43:45 +01:00
Abdellatif Ait boudad
4f3771db91 [2.2][HttpKernel] fixed wrong option name in FragmentHandler::fixOptions 2013-03-11 18:23:12 +01:00
Fabien Potencier
2705791d6d merged branch Tobion/fragment-render-escaping (PR #7090)
This PR was merged into the 2.2 branch.

Commits
-------

54d7d25 [HttpKernel] hinclude fragment renderer must escape URIs properly to return valid html

Discussion
----------

[HttpKernel] hinclude fragment renderer must escape URIs properly to return valid html

| Q             | A
| ------------- | ---
| Bug fix?      | [yes]
| New feature?  | [no]
| BC breaks?    | [no]
| Deprecations? | [no]
| Tests pass?   | [yes]
| Fixed tickets | [-]
| License       | MIT
| Doc PR        | [-]

Since rendering of hinclude fragments returns html/xml, it is marked as safe. So it's not auto-escaped of course. But that means it must properly escape it's input (the URI) when outputting in html context.
Btw, this does not need to be done for esi because esi tags are processed in middleware which do not go to the client/browser.

---------------------------------------------------------------------------

by Koc at 2013-02-15T22:59:05Z

Will it works correct when `arg_separator.output="&amp;"`?

---------------------------------------------------------------------------

by stof at 2013-02-15T23:04:01Z

if your url comes form the routing, yes. It [does not rely on the default separator](https://github.com/symfony/Routing/blob/master/Generator/UrlGenerator.php#L265) to avoid issues when the separator is configured to ``&amp;`` as it would have been escaped again in Twig templates for instance.

---------------------------------------------------------------------------

by fabpot at 2013-02-16T07:26:19Z

Can you include the proper PR header in the description? Thanks.

---------------------------------------------------------------------------

by Tobion at 2013-02-16T12:28:18Z

Added.
2013-02-20 23:12:30 +01:00
Fabien Potencier
39339121d6 fixed HInclude renderer (closes #7113) 2013-02-19 08:24:52 +01:00
Tobias Schultze
54d7d258c1 [HttpKernel] hinclude fragment renderer must escape URIs properly to return valid html 2013-02-15 22:21:39 +01:00
Fabien Potencier
a3131882e3 added a proper setter for the templating servicein HInclude 2013-02-10 12:34:10 +01:00
Fabien Potencier
5a2caa5e85 [HttpKernel] fixed the hinclude fragment renderer when the template is empty 2013-02-07 12:09:58 +01:00
Fabien Potencier
8f8d6cfb15 [HttpKernel] fixed regression when rendering an inline controller and passing some objects (closes #6822) 2013-02-01 17:19:49 +01:00
Fabien Potencier
c72e471c65 renamed some classes and Twig functions to more descriptive names (refs #6871)
HttpContentRenderer has been renamed to FragmentHandler.
The RendererStrategy subnamespace has been renamed to Fragment.
The strategy classes now have Fragment in their names.
ProxyRouterListener has been renamed to FragmentListener
The router_proxy configuration entry has been renamed to fragments.
2013-02-01 15:17:20 +01:00