redkite-labs / redkite-labs-elfinder-bundle
ElFinderBundle 封装了 elFinder 文件管理器,以便在 Symfony2 中使用。
Requires
- php: >=5.3.3
Requires (Dev)
- symfony/framework-bundle: >=2.1,<2.3-dev
README
ElFinderBundle 封装了 elFinder 文件管理器,以便在 Symfony2 中使用。
安装
将此包克隆到 vendor/bundles/RedKiteLabs 目录中
git clone git://github.com/RedKiteLabs/ElFinderBundle.git vendor/bundles/RedKiteLabs/ElFinderBundle
或者(如果您使用 deps 文件)
将以下内容添加到 deps 文件中
[ElFinderBundle]
git=git://github.com/RedKiteLabs/ElFinderBundle.git
target=bundles/RedKiteLabs/ElFinderBundle
现在使用 vendors 脚本来克隆新添加的仓库到您的项目中
php bin/vendors install
配置 ElFinderBundle
打开 AppKernel 配置文件,并将包添加到 registerBundles() 方法中
public function registerBundles()
{
$bundles = array(
...
new RedKiteLabs\ElFinderBundle\RedKiteLabsElFinderBundle(),
)
}
在 app/autoload.php
中注册 ElFinderBundle 命名空间
$loader->registerNamespaces(array(
...
'RedKiteLabs' => __DIR__.'/../vendor/bundles',
));
将路由配置导入 routing.yml 文件
_RedKiteLabsElFinderBundle:
resource: "@RedKiteLabsElFinderBundle/Resources/config/routing.yml"
在 config.yml 中将包注册到 Assetic 包中
# Assetic Configuration
assetic:
bundles: [ "RedKiteLabsElFinderBundle" ]
初始化子模块,获取 ElFinder 扩展库。进入 ElFinder 文件夹,然后执行以下命令
git submodule init
git submodule update
要完成包配置,您必须按照以下方式安装资源
app/console assets:install web
app/console assetic:dump
使用对象
RedKiteLabsElFinderBundle 提供了一个现成的控制器来显示 ElFinder
http://[yoursite]/al_showElFinder
自定义 elFinder
默认连接器配置非常简单,因此您可以根据需要对其进行配置。elFinder 对象被加载到 show.html.twig 模板中,其中添加了所有必需的资源和初始 jQuery 脚本。要更改配置,您应创建一个新的 twig 模板,该模板扩展了基本模板
/path/to/your/twig/template
{% extends 'RedKiteLabsElFinderBundle:ElFinder:show.html.twig' %}
此模板有四个可以覆盖的块
{% block stylesheet_files %}{% endblock %}
{% block javascript_files %}{% endblock %}
{% block init_script %}{% endblock %}
{% block elfinder_html %}{% endblock %}
名称说明一切,因此如果您需要更改初始化脚本,只需覆盖 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\RedKiteLabsElFinderMediaConnector</parameter>
</parameters>
<services>
<service id="el_finder_connector" class="%el_finder.media_connector%">
<argument type="service" id="service_container" />
</service>
</services>
RedKiteLabsElFinderMediaConnector 类在 DIC 中实例化。以下是其实现示例
namespace Path\To\RedKiteLabsElFinderMediaConnector;
use RedKiteLabs\ElFinderBundle\Core\Connector\RedKiteLabsElFinderBaseConnector;
class RedKiteLabsElFinderMediaConnector extends RedKiteLabsElFinderBaseConnector
{
protected function configure()
{
$request = $this->container->get('request');
$options = array(
'roots' => array(
array(
'driver' => 'LocalFileSystem', // driver for accessing file system (REQUIRED)
'path' => 'bundles/RedKiteLabselfinder/files/', // path to files (REQUIRED)
'URL' => $request->getScheme().'://'.$request->getHttpHost() . '/bundles/RedKiteLabselfinder/files/', // URL to files (REQUIRED)
'accessControl' => 'access' // disable and hide dot starting files (OPTIONAL)
)
)
);
return $options;
}
}
连接器扩展了 RedKiteLabsElFinderBaseConnector,它要求派生类实现一个 configure() 方法,其中必须声明 elFinder 连接器的选项。此函数必须返回一个选项数组。