shadowfax / zf2-asset-manager
ZF2 资产管理器
Requires
- php: >=5.3.3
- zendframework/zendframework: 2.2.*
This package is not auto-updated.
Last update: 2024-09-28 15:28:55 UTC
README
又一个 Zend Framework 2 资产管理器。
如果您正在寻找一个真正简单灵活的资产管理器用于您的应用程序,这可能就是它;但您可能正在寻找另一个项目。
需求
- Zend Framework 2 (最新 master 版本)
安装
主要设置
使用 composer
-
在您的 composer.json 中添加此项目
"require": { "shadowfax/zf2-asset-manager": "dev-master" }
-
现在运行以下命令让 composer 下载 ThemeManager
$ php composer.phar update
通过克隆项目
- 将此项目克隆到您的
./vendor/
目录中。
安装后
-
在您的
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
。