[AssetBundle] Move xml service configuration to php

This commit is contained in:
linh 2020-06-12 21:02:14 +07:00 committed by Tobias Schultze
parent 813d220aa1
commit 74650610ff
3 changed files with 92 additions and 62 deletions

View File

@ -315,7 +315,7 @@ class FrameworkExtension extends Extension
throw new LogicException('Asset support cannot be enabled as the Asset component is not installed. Try running "composer require symfony/asset".');
}
$this->registerAssetsConfiguration($config['assets'], $container, $loader);
$this->registerAssetsConfiguration($config['assets'], $container, $phpLoader);
}
if ($this->messengerConfigEnabled = $this->isConfigEnabled($container, $config['messenger'])) {
@ -990,9 +990,9 @@ class FrameworkExtension extends Extension
}
}
private function registerAssetsConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)
private function registerAssetsConfiguration(array $config, ContainerBuilder $container, PhpFileLoader $loader)
{
$loader->load('assets.xml');
$loader->load('assets.php');
if ($config['version_strategy']) {
$defaultVersion = new Reference($config['version_strategy']);

View File

@ -0,0 +1,89 @@
<?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\Component\DependencyInjection\Loader\Configurator;
use Symfony\Component\Asset\Context\RequestStackContext;
use Symfony\Component\Asset\Package;
use Symfony\Component\Asset\Packages;
use Symfony\Component\Asset\PathPackage;
use Symfony\Component\Asset\UrlPackage;
use Symfony\Component\Asset\VersionStrategy\EmptyVersionStrategy;
use Symfony\Component\Asset\VersionStrategy\JsonManifestVersionStrategy;
use Symfony\Component\Asset\VersionStrategy\RemoteJsonManifestVersionStrategy;
use Symfony\Component\Asset\VersionStrategy\StaticVersionStrategy;
return static function (ContainerConfigurator $container) {
$container->parameters()
->set('asset.request_context.base_path', null)
->set('asset.request_context.secure', null)
;
$container->services()
->set('assets.packages', Packages::class)
->args([
service('assets.empty_package'),
[],
])
->alias(Packages::class, 'assets.packages')
->set('assets.empty_package', Package::class)
->args([
service('assets.empty_version_strategy'),
])
->set('assets.context', RequestStackContext::class)
->args([
service('request_stack'),
param('asset.request_context.base_path'),
param('asset.request_context.secure'),
])
->set('assets.path_package', PathPackage::class)
->abstract()
->args([
abstract_arg('base path'),
abstract_arg('version strategy'),
service('assets.context'),
])
->set('assets.url_package', UrlPackage::class)
->abstract()
->args([
abstract_arg('base URLs'),
abstract_arg('version strategy'),
service('assets.context'),
])
->set('assets.static_version_strategy', StaticVersionStrategy::class)
->abstract()
->args([
abstract_arg('version'),
abstract_arg('format'),
])
->set('assets.empty_version_strategy', EmptyVersionStrategy::class)
->set('assets.json_manifest_version_strategy', JsonManifestVersionStrategy::class)
->abstract()
->args([
abstract_arg('manifest path'),
])
->set('assets.remote_json_manifest_version_strategy', RemoteJsonManifestVersionStrategy::class)
->abstract()
->args([
abstract_arg('manifest url'),
service('http_client'),
])
;
};

View File

@ -1,59 +0,0 @@
<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services https://symfony.com/schema/dic/services/services-1.0.xsd">
<parameters>
<parameter key="asset.request_context.base_path">null</parameter>
<parameter key="asset.request_context.secure">null</parameter>
</parameters>
<services>
<defaults public="false" />
<service id="assets.packages" class="Symfony\Component\Asset\Packages">
<argument type="service" id="assets.empty_package" /> <!-- default package -->
<argument type="collection" /> <!-- named packages -->
</service>
<service id="Symfony\Component\Asset\Packages" alias="assets.packages" />
<service id="assets.empty_package" class="Symfony\Component\Asset\Package">
<argument type="service" id="assets.empty_version_strategy" />
</service>
<service id="assets.context" class="Symfony\Component\Asset\Context\RequestStackContext">
<argument type="service" id="request_stack" />
<argument>%asset.request_context.base_path%</argument>
<argument>%asset.request_context.secure%</argument>
</service>
<service id="assets.path_package" class="Symfony\Component\Asset\PathPackage" abstract="true">
<argument /> <!-- base path -->
<argument /> <!-- version strategy -->
<argument type="service" id="assets.context" />
</service>
<service id="assets.url_package" class="Symfony\Component\Asset\UrlPackage" abstract="true">
<argument /> <!-- base URLs -->
<argument /> <!-- version strategy -->
<argument type="service" id="assets.context" />
</service>
<service id="assets.static_version_strategy" class="Symfony\Component\Asset\VersionStrategy\StaticVersionStrategy" abstract="true">
<argument /> <!-- version -->
<argument /> <!-- format -->
</service>
<service id="assets.empty_version_strategy" class="Symfony\Component\Asset\VersionStrategy\EmptyVersionStrategy" />
<service id="assets.json_manifest_version_strategy" class="Symfony\Component\Asset\VersionStrategy\JsonManifestVersionStrategy" abstract="true">
<argument /> <!-- manifest path -->
</service>
<service id="assets.remote_json_manifest_version_strategy" class="Symfony\Component\Asset\VersionStrategy\RemoteJsonManifestVersionStrategy" abstract="true">
<argument /> <!-- manifest url -->
<argument type="service" id="http_client" />
</service>
</services>
</container>