alphalemon/ elfinder-bundle
ElFinderBundle 封装了 elFinder 文件管理器,以供在 Symfony2 中使用。
Requires
- php: >=5.3.3
Requires (Dev)
- symfony/framework-bundle: >=2.1,<2.3-dev
This package is not auto-updated.
Last update: 2024-09-28 11:55:47 UTC
README
ElFinderBundle 封装了 elFinder 文件管理器,以供在 Symfony2 中使用。
安装
将此包克隆到 vendor/bundles/AlphaLemon 目录中
git clone git://github.com/alphalemon/ElFinderBundle.git vendor/bundles/AlphaLemon/ElFinderBundle
或者(如果你使用 deps 文件)
将以下内容添加到 deps 文件中
[ElFinderBundle]
git=git://github.com/alphalemon/ElFinderBundle.git
target=bundles/AlphaLemon/ElFinderBundle
现在使用 vendors 脚本来克隆新添加的仓库到你的项目中
php bin/vendors install
配置 ElFinderBundle
打开 AppKernel 配置文件,并将包添加到 registerBundles() 方法中
public function registerBundles()
{
$bundles = array(
...
new AlphaLemon\ElFinderBundle\AlphaLemonElFinderBundle(),
)
}
在 app/autoload.php
中注册 ElFinderBundle 命名空间
$loader->registerNamespaces(array(
...
'AlphaLemon' => __DIR__.'/../vendor/bundles',
));
将路由配置导入到 routing.yml 文件中
_AlphaLemonElFinderBundle:
resource: "@AlphaLemonElFinderBundle/Resources/config/routing.yml"
在 config.yml 中将包注册到 Assetic 包中
# Assetic Configuration
assetic:
bundles: [ "AlphaLemonElFinderBundle" ]
初始化子模块,获取 ElFinder 库供应商。在 ElFinder 文件夹内,然后执行以下命令
git submodule init
git submodule update
要完成包配置,你必须按照以下方式安装资源
app/console assets:install web
app/console assetic:dump
使用对象
AlphaLemonElFinderBundle 提供了一个用于显示 ElFinder 的现成控制器
http://[yoursite]/al_showElFinder
自定义 elFinder
默认连接器配置非常简单,因此你可能需要根据需要配置它。elFinder 对象被加载到 show.html.twig 模板中,其中添加了所有必需的资源和初始 jQuery 脚本。要更改配置,你应该创建一个新的twig模板,它扩展了基础模板
/path/to/your/twig/template
{% extends 'AlphaLemonElFinderBundle:ElFinder:show.html.twig' %}
此模板有四个可以覆盖的块
{% block stylesheet_files %}{% endblock %}
{% block javascript_files %}{% endblock %}
{% block init_script %}{% endblock %}
{% block elfinder_html %}{% endblock %}
名称已经说明了,所以如果你需要更改 init 脚本,只需覆盖 init_script 块即可
{% block init_script %}
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
$('<div/>').dialogelfinder({
url : '/al_elFinderMediaConnect',
lang : 'en',
width : 840,
destroyOnClose : true
}).dialogelfinder('instance');
});
</script>
{% endblock %}
阅读 elFinder 文档以了解更多关于可用选项的信息
连接器
url 选项声明要使用的连接器。这是定义 elFinder 选项的类,如保存文件的文件夹等。在上面的示例中,调用了 al_elFinderMediaConnect 路由,并且动作实现可能是
public function connectMediaAction()
{
$connector = $this->container->get('el_finder_media_connector');
$connector->connect();
}
你可能注意到连接器已被注入到依赖注入容器中,并且其实现是
<parameters>
<parameter key="el_finder.media_connector">Path\To\AlphaLemonElFinderMediaConnector</parameter>
</parameters>
<services>
<service id="el_finder_connector" class="%el_finder.media_connector%">
<argument type="service" id="service_container" />
</service>
</services>
AlphaLemonElFinderMediaConnector 类在 DIC 中实例化。以下是其实现的示例
namespace Path\To\AlphaLemonElFinderMediaConnector;
use AlphaLemon\ElFinderBundle\Core\Connector\AlphaLemonElFinderBaseConnector;
class AlphaLemonElFinderMediaConnector extends AlphaLemonElFinderBaseConnector
{
protected function configure()
{
$request = $this->container->get('request');
$options = array(
'roots' => array(
array(
'driver' => 'LocalFileSystem', // driver for accessing file system (REQUIRED)
'path' => 'bundles/alphalemonelfinder/files/', // path to files (REQUIRED)
'URL' => $request->getScheme().'://'.$request->getHttpHost() . '/bundles/alphalemonelfinder/files/', // URL to files (REQUIRED)
'accessControl' => 'access' // disable and hide dot starting files (OPTIONAL)
)
)
);
return $options;
}
}
连接器扩展了 AlphaLemonElFinderBaseConnector,该连接器要求派生类实现一个 configure() 方法,其中必须声明 elFinder 连接器的选项。此函数必须返回一个选项数组。