如何使用Zend Framework 2的AssetManager过滤器?

时间:2013-08-17 08:27:31

标签: php zend-framework2

我正在尝试将AssetManager模块与Zend Framework 2一起使用。

我使用过滤器时遇到问题。目前我可以将css文件与以下内容组合在一起(在module.config.php中):

'resolver_configs' => array(
    'collections' => array(
        'css/combined.css' => array(
            'css/a.css',
            'css/b.css'
        ),
        'paths' => array(
            __DIR__ . '/../public'
        ),
    ),
),

问题是我无法使用以下内容缩小css文件:

'filters' => array(
    'css/combined.css' => array(
        array(
            'filter' => 'UglifyCss'
        ),
    ),
),

我也尝试过CssMin过滤器,但它也没有缩小。

有关于filter的文档,并且过滤器不能开箱即用,它需要提供依赖项。如果像UglifyCss和CssMin这样的过滤器需要依赖项,那么我如何知道需要哪些依赖项以及如何提供它们呢?

1 个答案:

答案 0 :(得分:0)

过滤器不适用于集合。它们只能应用于单个资产。如果您希望缩小样式表集合,则必须缩小集合中的各个组件。

考虑以下配置:

'resolver_configs' => array(
    'collections' => array(
        'css/combined.css' => array(
            'css/a.css',
            'css/b.css'
        ),
        'paths' => array(
            __DIR__ . '/../public'
        ),
    ),
),

您需要这些过滤器:

'filters' => array(
    'css/a.css' => array(
        array(
            'filter' => 'UglifyCss'
        ),
    ),
    'css/b.css' => array(
        array(
            'filter' => 'UglifyCss'
        ),
    ),
),

至于提供过滤器的依赖关系,您可以查看过滤器本身的内部。它们通常包含指向所需文件的链接:https://github.com/kriswallsmith/assetic/blob/master/src/Assetic/Filter/JSMinFilter.php#L21