2013-03-19 2 views
0

CommonJS 모듈을 단일 파일로 컴파일하기 위해 Symfony2 번들에 포함 된 고유의 Assetic 필터를 작성했습니다. cjsDeliveryBundle라고 부르지 만, 지금은 그 것을 떠나요.config.yml에서 Assetic 필터 서비스에 인수 전달

config_dev.ymlconfig_prod.yml 파일에서 필터에 다른 옵션을 설정할 수 있기를 원합니다.

필터에는 공용 설정자가 하나만 있습니다 (setMinifyIdentifiers). 부울을 허용합니다. 나는 내 config.yml에 다음 setter injection에 Symfony2 문서를 읽고 추가 :

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으로 호출되지 않습니다 것을 제외하고 잘 작동합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

0

알 수 있습니다. 해결책은 각 환경에 대해 별도의 YAML 매개 변수 파일을 가지며 각 환경에서 필터 매개 변수를 지정하는 것입니다.

그래서 여기에 내가 한 일이 있습니다.

  1. config.ymlimports: 지침에서 - { resource: parameters.yml }를 제거합니다.
  2. parameters.yml 파일을 제거하고 매개 변수를 두 개의 새 파일, 즉 parameters_dev.ymlparameters_prod.yml에 넣습니다.
  3. - { resource: parameters_prod.yml }에서 imports: 지시어에 imports: 지시문에 의 - { resource: parameters_dev.yml }을 추가하십시오.
  4. parameters_prod.ymlparameters: 지시문에 matt_cg.cjs_delivery_filter.minify_identifiers: true을 추가하십시오.