0

CommonJS モジュールを単一のファイルにコンパイルするために、Symfony2 Bundle に含まれる独自の Assetic フィルターを作成しました。これはcjsDeliveryBundleと呼ばれますが、ここでは脇に置きましょう。

config_dev.ymlmyおよびconfig_prod.ymlfilesからフィルターにさまざまなオプションを設定できるようにしたいと考えています。

setMinifyIdentifiersフィルターには、ブール値を受け入れる単一の public setter:があります。セッター注入に関する Symfony2 のドキュメントを読み、以下を my に追加しましたconfig.yml

assetic:
    filters:
        cssrewrite: ~
        cjs_delivery:
            resource: "%kernel.root_dir%/../src/MattCG/cjsDeliveryBundle/Resources/config/services.xml"
            calls:
                - [ setMinifyIdentifiers, [ true ] ]

以下はservices.xml私のバンドルです。

<?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します。私は何を間違っていますか?

4

1 に答える 1

0

とった。解決策は、環境ごとに個別の YAML パラメーター ファイルを用意し、それぞれにフィルター パラメーターを指定することです。

だからここに私が私の場合にやったことです。

  1. のディレクティブ- { resource: parameters.yml }から を削除します。imports:config.yml
  2. ファイルを削除し、parameters.yml代わりにパラメーターを 2 つの新しいファイルに入れます:parameters_dev.ymlparameters_prod.yml.
  3. のディレクティブとのディレクティブに追加し- { resource: parameters_dev.yml }ます。imports:config_dev.yml- { resource: parameters_prod.yml }imports:config_prod.yml
  4. matt_cg.cjs_delivery_filter.minify_identifiers: trueparameters:ディレクティブに追加しparameters_prod.ymlます。
于 2013-03-20T00:42:38.013 に答える