[Asset] Provide default context

This commit is contained in:
Roland Franssen 2016-12-24 11:15:47 +00:00 committed by Fabien Potencier
parent 3d799ddcdb
commit 9137d57ecd
5 changed files with 36 additions and 3 deletions

View File

@ -53,6 +53,8 @@ CHANGELOG
`EventDispatcherDebugCommand`, `RouterDebugCommand`, `RouterMatchCommand`, `EventDispatcherDebugCommand`, `RouterDebugCommand`, `RouterMatchCommand`,
`TranslationDebugCommand`, `TranslationUpdateCommand`, `XliffLintCommand` `TranslationDebugCommand`, `TranslationUpdateCommand`, `XliffLintCommand`
and `YamlLintCommand` classes have been marked as final and `YamlLintCommand` classes have been marked as final
* Added `asset.request_context.base_path` and `asset.request_context.secure` parameters
to provide a default request context in case the stack is empty (similar to `router.request_context.*` parameters)
3.3.0 3.3.0
----- -----

View File

@ -4,6 +4,11 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<parameters>
<parameter key="asset.request_context.base_path"></parameter>
<parameter key="asset.request_context.secure">false</parameter>
</parameters>
<services> <services>
<defaults public="false" /> <defaults public="false" />
@ -19,6 +24,8 @@
<service id="assets.context" class="Symfony\Component\Asset\Context\RequestStackContext" public="true"> <service id="assets.context" class="Symfony\Component\Asset\Context\RequestStackContext" public="true">
<argument type="service" id="request_stack" /> <argument type="service" id="request_stack" />
<argument>%asset.request_context.base_path%</argument>
<argument>%asset.request_context.secure%</argument>
</service> </service>
<service id="assets.path_package" class="Symfony\Component\Asset\PathPackage" abstract="true" public="true"> <service id="assets.path_package" class="Symfony\Component\Asset\PathPackage" abstract="true" public="true">

View File

@ -1,6 +1,12 @@
CHANGELOG CHANGELOG
========= =========
3.4.0
-----
* added optional arguments `$basePath` and `$secure` in `RequestStackContext::__construct()`
to provide a default request context in case the stack is empty
3.3.0 3.3.0
----- -----
* Added `JsonManifestVersionStrategy` as a way to read final, * Added `JsonManifestVersionStrategy` as a way to read final,

View File

@ -21,10 +21,19 @@ use Symfony\Component\HttpFoundation\RequestStack;
class RequestStackContext implements ContextInterface class RequestStackContext implements ContextInterface
{ {
private $requestStack; private $requestStack;
private $basePath;
private $secure;
public function __construct(RequestStack $requestStack) /**
* @param RequestStack $requestStack
* @param string $basePath
* @param bool $secure
*/
public function __construct(RequestStack $requestStack, $basePath = '', $secure = false)
{ {
$this->requestStack = $requestStack; $this->requestStack = $requestStack;
$this->basePath = $basePath;
$this->secure = $secure;
} }
/** /**
@ -33,7 +42,7 @@ class RequestStackContext implements ContextInterface
public function getBasePath() public function getBasePath()
{ {
if (!$request = $this->requestStack->getMasterRequest()) { if (!$request = $this->requestStack->getMasterRequest()) {
return ''; return $this->basePath;
} }
return $request->getBasePath(); return $request->getBasePath();
@ -45,7 +54,7 @@ class RequestStackContext implements ContextInterface
public function isSecure() public function isSecure()
{ {
if (!$request = $this->requestStack->getMasterRequest()) { if (!$request = $this->requestStack->getMasterRequest()) {
return false; return $this->secure;
} }
return $request->isSecure(); return $request->isSecure();

View File

@ -61,4 +61,13 @@ class RequestStackContextTest extends TestCase
$this->assertTrue($requestStackContext->isSecure()); $this->assertTrue($requestStackContext->isSecure());
} }
public function testDefaultContext()
{
$requestStack = $this->getMockBuilder('Symfony\Component\HttpFoundation\RequestStack')->getMock();
$requestStackContext = new RequestStackContext($requestStack, 'default-path', true);
$this->assertSame('default-path', $requestStackContext->getBasePath());
$this->assertTrue($requestStackContext->isSecure());
}
} }