Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,7 +7,7 @@ | |
<parameters> | ||
<parameter key="templating.engine.php.class">Symfony\Bundle\FrameworkBundle\Templating\PhpEngine</parameter> | ||
<parameter key="templating.helper.slots.class">Symfony\Component\Templating\Helper\SlotsHelper</parameter> | ||
<parameter key="templating.helper.assets.class">Symfony\Bundle\FrameworkBundle\Templating\Helper\AssetsHelper</parameter> | ||
<parameter key="templating.helper.assets.class">Symfony\Component\Templating\Helper\CoreAssetsHelper</parameter> | ||
<parameter key="templating.helper.actions.class">Symfony\Bundle\FrameworkBundle\Templating\Helper\ActionsHelper</parameter> | ||
<parameter key="templating.helper.router.class">Symfony\Bundle\FrameworkBundle\Templating\Helper\RouterHelper</parameter> | ||
<parameter key="templating.helper.request.class">Symfony\Bundle\FrameworkBundle\Templating\Helper\RequestHelper</parameter> | ||
|
@@ -16,7 +16,9 @@ | |
<parameter key="templating.helper.translator.class">Symfony\Bundle\FrameworkBundle\Templating\Helper\TranslatorHelper</parameter> | ||
<parameter key="templating.helper.form.class">Symfony\Bundle\FrameworkBundle\Templating\Helper\FormHelper</parameter> | ||
<parameter key="templating.globals.class">Symfony\Bundle\FrameworkBundle\Templating\GlobalVariables</parameter> | ||
<parameter key="templating.asset_package.class">Symfony\Component\Templating\Asset\AssetPackage</parameter> | ||
<parameter key="templating.asset.path_package.class">Symfony\Bundle\FrameworkBundle\Templating\Asset\PathPackage</parameter> | ||
<parameter key="templating.asset.url_package.class">Symfony\Component\Templating\Asset\UrlPackage</parameter> | ||
<parameter key="templating.asset.package_factory.class">Symfony\Bundle\FrameworkBundle\Templating\Asset\PackageFactory</parameter> | ||
</parameters> | ||
|
||
<services> | ||
|
@@ -32,12 +34,32 @@ | |
<tag name="templating.helper" alias="slots" /> | ||
</service> | ||
|
||
<service id="templating.helper.assets" class="%templating.helper.assets.class%"> | ||
<service id="templating.helper.assets" class="%templating.helper.assets.class%" scope="request"> | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
odolbeau
Contributor
|
||
<tag name="templating.helper" alias="assets" /> | ||
<argument /> <!-- default package --> | ||
<argument type="collection" /> <!-- named packages --> | ||
</service> | ||
|
||
<service id="templating.asset.path_package" class="%templating.asset.path_package.class%" abstract="true"> | ||
<argument type="service" id="request" /> | ||
<argument /> <!-- version --> | ||
<argument /> <!-- version format --> | ||
</service> | ||
|
||
<service id="templating.asset.url_package" class="%templating.asset.url_package.class%" abstract="true"> | ||
<argument /> <!-- base urls --> | ||
<argument /> <!-- version --> | ||
<argument /> <!-- version format --> | ||
</service> | ||
|
||
<service id="templating.asset.request_aware_package" class="Symfony\Component\Templating\Asset\PackageInterface" factory-service="templating.asset.package_factory" factory-method="getPackage" abstract="true"> | ||
<argument type="service" id="request" strict="false" /> | ||
<argument>%templating.helper.assets.assets_base_urls%</argument> | ||
<argument>%templating.helper.assets.assets_version%</argument> | ||
<argument type="collection" /> <!-- packages --> | ||
<argument /> <!-- http id --> | ||
<argument /> <!-- ssl id --> | ||
</service> | ||
|
||
<service id="templating.asset.package_factory" class="%templating.asset.package_factory.class%"> | ||
<argument type="service" id="service_container" /> | ||
</service> | ||
|
||
<service id="templating.helper.request" class="%templating.helper.request.class%"> | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
<?php | ||
|
||
/* | ||
* This file is part of the Symfony package. | ||
* | ||
* (c) Fabien Potencier <fabien@symfony.com> | ||
* | ||
* For the full copyright and license information, please view the LICENSE | ||
* file that was distributed with this source code. | ||
*/ | ||
|
||
namespace Symfony\Bundle\FrameworkBundle\Templating\Asset; | ||
|
||
use Symfony\Component\DependencyInjection\ContainerInterface; | ||
use Symfony\Component\HttpFoundation\Request; | ||
|
||
/** | ||
* Creates packages based on whether the current request is secure. | ||
* | ||
* @author Kris Wallsmith <kris@symfony.com> | ||
*/ | ||
class PackageFactory | ||
{ | ||
private $container; | ||
|
||
public function __construct(ContainerInterface $container) | ||
{ | ||
$this->container = $container; | ||
} | ||
|
||
/** | ||
* Returns either the HTTP or SSL version of an asset package. | ||
* | ||
* @param Request $request The current request | ||
* @param string $httpId The id for the package to use when the current request is HTTP | ||
* @param string $sslId The id for the package to use when the current request is SSL | ||
* | ||
* @return PackageInterface The package | ||
*/ | ||
public function getPackage(Request $request, $httpId, $sslId) | ||
{ | ||
return $this->container->get($request->isSecure() ? $sslId : $httpId); | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
<?php | ||
|
||
/* | ||
* This file is part of the Symfony package. | ||
* | ||
* (c) Fabien Potencier <fabien@symfony.com> | ||
* | ||
* For the full copyright and license information, please view the LICENSE | ||
* file that was distributed with this source code. | ||
*/ | ||
|
||
namespace Symfony\Bundle\FrameworkBundle\Templating\Asset; | ||
|
||
use Symfony\Component\HttpFoundation\Request; | ||
use Symfony\Component\Templating\Asset\PathPackage as BasePathPackage; | ||
|
||
/** | ||
* The path packages adds a version and a base path to asset URLs. | ||
* | ||
* @author Kris Wallsmith <kris@symfony.com> | ||
*/ | ||
class PathPackage extends BasePathPackage | ||
{ | ||
/** | ||
* Constructor. | ||
* | ||
* @param Request $request The current request | ||
* @param string $version The version | ||
* @param string $format The version format | ||
*/ | ||
public function __construct(Request $request, $version = null, $format = null) | ||
{ | ||
parent::__construct($request->getBasePath(), $version, $format); | ||
} | ||
} |
This file was deleted.
@kriswallsmith: Can you explain why request scope was added here? As far as I can tell, none of the templating helper's arguments are request-specific, so the service is a candidate to use the default container scope.
I've traced an issue in our fixture loading back to this service's scope. During loading of user data fixtures, welcome email templates are rendered, which utilize the
asset()
Twig function. That's defined in TwigBundle's AssetsExtension, which in turn calls a method on CoreAssetsHelper, defined here. Since that entire process happens during a console script, I don't believe there's any request scope, so we were seeing the following error: