shadowfax/zf2-asset-manager

ZF2 资产管理器

dev-master 2013-09-16 11:24 UTC

This package is not auto-updated.

Last update: 2024-09-28 15:28:55 UTC


README

又一个 Zend Framework 2 资产管理器。

如果您正在寻找一个真正简单灵活的资产管理器用于您的应用程序,这可能就是它;但您可能正在寻找另一个项目。

需求

安装

主要设置

使用 composer

  1. 在您的 composer.json 中添加此项目

    "require": {
        "shadowfax/zf2-asset-manager": "dev-master"
    }
  2. 现在运行以下命令让 composer 下载 ThemeManager

    $ php composer.phar update

通过克隆项目

  1. 将此项目克隆到您的 ./vendor/ 目录中。

安装后

  1. 在您的 application.config.php 文件中启用它。

    <?php
    return array(
        'modules' => array(
            'ThemeManager',
            // ...
        ),
        // ...
    );

用法

这个资产管理器是为了支持我的 ThemeManager 而编写的。我只需要一个简单灵活到足以随时更改资源的地方。在我的情况下,如果我要更换主题,资源管理器应该被告知更改它所使用的资源。

这些更改是通过服务 AssetPathStack 完成的,我们可以添加新的资源文件路径,清除所有路径,设置新路径等... 让我们看看一个模块内部(Module.php 文件)的示例

public function onBootstrap(MvcEvent $e)
{
    $serviceManager = $e->getApplication()->getServiceManager();
    $assetPathStack = $serviceManager->get('AssetPathStack');
    $assetPathStack->addPath( __DIR__ . '/assets');
}

通过这段代码,我们告诉 AssetPathStack 为我们的模块中的 assets 文件夹添加一个新的路径。现在我们的模块中的资源将通过资源路由进行访问。

这也可以通过 module.config.php 文件来完成

return array(
    // ...
    'asset_manager' => array(
        'paths' => array(
            __DIR__ . '/../assets'
        )
    )
);

默认情况下,资源路由是 /assets,但可以通过配置文件进行更改。

return array(
    // ...
    'asset_manager' => array(
        'routes' => array(
            'files' => array(
                'type' => 'Zend\Mvc\Router\Http\Literal',
                'options' => array(
                    'route'    => '/files',
                ),
                'may_terminate' => true,
                'child_routes' => array(
                    'default' => array(
                        'type' => 'Wildcard'
                    )
                )
            )
        ),
    )
);

在这个示例中,我们将资源路由从 assets 更改为 /files。我们建议将这些更改放在全局配置文件中,如 config/autoload/assetmanager.global.php,因为在 module.config.php 中执行这些操作可能会由于路由冲突而导致错误,并且 AssetManager 不独立考虑模块。

可以创建多个路由。例如

return array(
    // ...
    'asset_manager' => array(
        'routes' => array(
            'css' => array(
                'type' => 'Zend\Mvc\Router\Http\Literal',
                'options' => array(
                    'route'    => '/css',
                ),
                'may_terminate' => true,
                'child_routes' => array(
                    'default' => array(
                        'type' => 'Wildcard'
                    )
                )
            ),
            'js' => array(
                'type' => 'Zend\Mvc\Router\Http\Literal',
                'options' => array(
                    'route'    => '/js',
                ),
                'may_terminate' => true,
                'child_routes' => array(
                    'default' => array(
                        'type' => 'Wildcard'
                    )
                )
            ),
            'images' => array(
                'type' => 'Zend\Mvc\Router\Http\Literal',
                'options' => array(
                    'route'    => '/images',
                ),
                'may_terminate' => true,
                'child_routes' => array(
                    'default' => array(
                        'type' => 'Wildcard'
                    )
                )
            )
        ),
    )
);

这允许我们为资产管理器设置透明的配置。

您不必担心路由名称冲突,因为 AssetManager 会在路由名称前添加 asset_manager。在上面的示例中,路由名称 css 将在添加到路由器之前转换为 asset_manager/css