Я написал собственный фильтр Assetic, содержащийся в пакете Symfony2, чтобы скомпилировать модули CommonJS в один файл. Это называется cjsDeliveryBundle, но давайте оставим это в стороне на данный момент.Передача аргументов службе Assetic filter из config.yml
Я хочу, чтобы иметь возможность устанавливать различные параметры в фильтре из моих config_dev.yml
и config_prod.yml
файлов.
Фильтр имеет один публичный сеттер: setMinifyIdentifiers
, который принимает логическое значение. Я прочитал документацию Symfony2 на setter injection и добавил следующее к моему config.yml
:
assetic:
filters:
cssrewrite: ~
cjs_delivery:
resource: "%kernel.root_dir%/../src/MattCG/cjsDeliveryBundle/Resources/config/services.xml"
calls:
- [ setMinifyIdentifiers, [ true ] ]
Ниже приводится services.xml
для моего Bundle.
<?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 http://symfony.com/schema/dic/services/services-1.0.xsd">
<parameters>
<parameter key="matt_cg.cjs_delivery_filter.class">MattCG\cjsDeliveryBundle\Assetic\Filter\cjsDeliveryFilter</parameter>
<parameter key="matt_cg.cjs_delivery_filter.minify_identifiers">null</parameter>
</parameters>
<services>
<service id="matt_cg.cjs_delivery_filter" class="%matt_cg.cjs_delivery_filter.class%">
<tag name="assetic.filter" alias="cjs_delivery"></tag>
<call method="setMinifyIdentifiers">
<argument>%matt_cg.cjs_delivery_filter.minify_identifiers%</argument>
</call>
</service>
</services>
</container>
Фильтр работает отлично, за исключением того, что сеттер никогда не вызывается с true
в качестве аргумента. Что я делаю не так?