将HeadScript javascript与widmogrod / zf2-assetic-module和js组合在多个模块中

时间:2013-08-20 19:53:21

标签: php zend-framework2 assetic

遇到一些障碍,我找不到任何支持文档。我的用例相当简单。 Application模块有javascript应该进入头部,而我的其他模块之一Foo也有脚本应该进入头部。我假设这个Assetic模块可以解决这个问题。这是我推断的内容:

应用配置

/**
 * 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,
                    )
                ),
            ),
        ),
    ),
),

然后在我的Foo模块中......

Foo模块配置

/**
 * 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。我感觉像是米尔顿的模因,“我被告知会有资产合并!” :)

感谢您提供的任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:5)

好的 - 我已经弄清楚了。希望有一天这会帮助别人。我上面提到的配置密钥并不准确 - 但是 - 当考虑到秘密的未记录的功能时,它们没有正确制作;不得不破解消息来源以了解包括资产包中的“head”这个词实际上是在脑袋中自动加载。它最终是一个很好的功能,但是当你不了解它时,真的是一个令人头疼的问题。