redkite-labs/redkite-labs-elfinder-bundle

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

安装次数: 1,777

依赖者: 1

建议者: 0

安全: 0

星标: 1

关注者: 3

分支: 0

开放问题: 0

类型:symfony-bundle

v1.1.6 2014-04-13 08:53 UTC

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