alphalemon/elfinder-bundle

ElFinderBundle 封装了 elFinder 文件管理器,以供在 Symfony2 中使用。

安装次数: 2,261

依赖: 1

建议者: 0

安全: 0

星标: 17

关注者: 2

分支: 6

开放问题: 3

类型:symfony-bundle

dev-master 2013-05-27 10:48 UTC

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 连接器的选项。此函数必须返回一个选项数组。