2013-08-20 27 views
2

遇到了一些障礙,我無法找到任何支持文檔。我的用例非常簡單。 Application模塊具有應該進入頭部的javascript,並且我的其他模塊之一Foo也具有應該進入頭部的腳本。我認爲這個資產模塊可以解決這個問題。這是我推斷:在多個模塊中將HeadScript javascript與widmogrod/zf2-assetic-module和js結合使用

應用程序配置

/** 
* Assetic 
*/ 
'assetic_configuration' => array(

    'buildOnRequest' => true, 
    'cacheEnabled'  => false, 
    'webPath'   => realpath('public/assets'), 
    'basePath'   => 'assets', 


    'default' => array(

     'assets' => array(
      '@base_css', 
      '@head_js', 
     ), 

     'options' => array(
      'mixin' => true, 
     ), 
    ), 

    'modules' => array(

     'application' => array(

      # module root path for yout css and js files 
      'root_path' => __DIR__ . '/../assets', 

      # collection of assets 
      'collections' => array(

       'base_css' => array(
        'assets' => array(
         'css/*.css', 
        ), 
        'filters' => array(), 
        'options' => array(), 
       ), 

       'head_js' => array(
        'assets' => array(
         'js/*.js', 
        ), 
        'filters' => array(), 
       ), 

       'base_images' => array(
        'assets'=> array(
         'images/*.png', 
        ), 
        'options' => array(
         'move_raw' => true, 
        ) 
       ), 
      ), 
     ), 
    ), 
), 

,然後在我的富模塊...

美孚模塊配置

/** 
* Assetic 
*/ 
'assetic_configuration' => array(

    'default' => array(
     'assets' => array(
      '@base_css', 
      '@head_js', 
     ), 

     'options' => array(
      'mixin' => true, 
     ), 
    ), 


    'modules' => array(

     'foo' => array(

      # module root path for yout css and js files 
      'root_path' => __DIR__ . '/../assets', 

      # collection of assets 
      'collections' => array(

       'base_css' => array(
        'assets' => array(
         'css/*.css' 
        ), 
        'filters' => array(), 
        'options' => array(), 
       ), 

       'head_js' => array(
        'assets' => array(
         'js/*.js' // relative to 'root_path' 
        ), 
        'filters' => array(), 
        'options' => array(), 
       ), 

       'base_images' => array(
        'assets'=> array(
         'images/*.png' 
        ), 
        'options' => array(
         'move_raw' => true, 
        ) 
       ), 
      ), 
     ), 
    ), 
), 

有了這個配置,很遺憾,只有Foo模塊的javascript進入head_js.js。我感覺就像米爾頓那樣迷戀,「我被告知會有資產結合!」 :)

任何幫助,你可以提供,表示讚賞。

謝謝!

+0

注意,如果我垃圾模塊 - > foo-> head_js,那麼應用程序中的head_js會*進入。 – Saeven

+0

因此,模塊配置文件發生的一件事是它們全部合併在一起,一些密鑰(特別是不與一個DiC關聯的密鑰)被覆蓋。這使您可以覆蓋默認配置。有可能這就是這裏發生的事情,也因爲'應用程序'和'富'是不同的鍵,我不明白他們爲什麼會相互覆蓋。嘗試從控制器'$ this-> getServiceLocator() - > get('Config')'執行配置轉儲,並查看是否所有鍵都顯示爲他們應該(合併)Assetic的配置。 – Adrian

+0

嘿,謝謝你刺傷它阿德里安。似乎不是配置問題。我試圖避免開放源代碼來嘗試理解它。 – Saeven

回答

5

好的 - 我已經知道了。希望這有助於別人有一天。我在上面提到的配置密鑰並不準確 - 但是 - 當考慮到祕密的無證文件特性時,它們沒有正確製作;不得不打開源頭以獲知包括資產包中的「頭部」字樣,實際上將其自動加載到頭部。這是一個很好的功能,但當你不知道它的時候,它真的是一個令人頭疼的問題。

+2

謝謝!我試圖在頭部加載一個腳本,但是我找不到如何使用它,我也正在破解代碼,但是我給堆棧溢出了一個鏡頭,我很高興我做到了。 – markdrake

相關問題