digitalkaoz / gaufrette-browser-bundle
此包提供了KnpMenu库的集成
0.3.0
2014-11-17 16:06 UTC
Requires
- aferrandini/urlizer: 1.0.0
- knplabs/knp-gaufrette-bundle: ~0.1
Requires (Dev)
Suggests
- sensio/framework-extra-bundle: for using the param-converters for file and directory
This package is not auto-updated.
Last update: 2024-09-14 14:45:08 UTC
README
此包允许您像浏览Doctrine连接一样浏览Gaufrette文件系统。它试图将Doctrine ObjectRepositories和Entities包装在Gaufrette文件周围。
安装
使用Composer安装它
{ "require" : { "digitalkaoz/gaufrette-browser-bundle" : "dev-master@dev" } }
在您的Kernel中激活Bundle
// application/AppKernel.php public function registerBundles() { return array( // ... new rs\GaufretteBrowserBundle\rsGaufretteBrowserBundle(), // ... ); }
导入路由
rs_gaufrette_browser: resource: "@rsGaufretteBrowserBundle/Resources/config/routing.xml" prefix: /gaufrette/browser
配置
创建一个Gaufrette文件系统(有关更多安装和配置信息,请参阅https://github.com/KnpLabs/KnpGaufretteBundle)
knp_gaufrette: adapters: default: local: directory: /your/path/ filesystems: default: adapter: default alias: default_filesystem stream_wrapper: ~
将浏览器连接到文件系统
rs_gaufrette_browser: filesystem: default_filesystem #the gaufrette filesystem alias to use
完整的配置参考
rs_gaufrette_browser: file_pattern: "/\.(jpg|gif|jpeg|png)$/" # a valid regular expression to filter for file-extensions filesystem: default_filesystem # the gaufrette filesystem alias to use file_class: Your\File\Class # should extend rs\GaufretteBrowserBundle\Entity\File directory_class: Your\Directory\Class # should extend rs\GaufretteBrowserBundle\Entity\Directory
使用方法
转到http://your.domain/gaufrette/browser并浏览文件系统
查询目录或文件
使用存储库实现
$this->get('rs_gaufrette_browser.repository.directory')->findBy(array('prefix'=>'/foo')); #only search folders that starts with /foo $this->get('rs_gaufrette_browser.repository.file')->findBy(array('suffix'=>'/\.xls/')); #only search .xls files $this->get('rs_gaufrette_browser.repository.file')->find('/foo/bar.png'); #find one file $this->get('rs_gaufrette_browser.repository.file')->findOneBy(array('prefix'=>'/foo', 'suffix' => '/\.xls/')); #find one file named /foo/*.xls
使用参数转换器
使用参数转换器为Directory
和File
非常简单
/** * @ParamConverter("folder", class="rs\GaufretteBrowserBundle\Entity\Directory", options={"id" = "slug"}) */ public function myCustomDirectoryAction(Request $request, Directory $folder){} /** * @ParamConverter("file", class="rs\GaufretteBrowserBundle\Entity\File", options={"id" = "slug"}) */ public function myCustomFileAction(Request $request, File $file){}
钩入事件
控制器-操作中的所有内容都是使用事件构建的。
以下事件存在
final class GaufretteBrowserEvents { const DIRECTORY_SHOW = 'gaufrette.directory.show'; const DIRECTORY_INDEX = 'gaufrette.directory.index'; const FILE_SHOW = 'gaufrette.file.show'; const FILE_INDEX = 'gaufrette.file.index'; }
将自定义功能挂钩到默认控制器
实现订阅者
class MyEventSubscriber implements EventSubscriberInterface { public static function getSubscribedEvents() { return array( GaufretteBrowserEvents::DIRECTORY_INDEX => 'myCustomAction' ); } public function myCustomAction(DirectoryControllerEvent $event) { $event->addDirectory($myCustomDirectory); $event->removeDirectory($unwantedDirectory); $event->addTemplateData('myCustomVar', 'foobar'); } }
并为服务添加标签
<service id="my.custom.event_subscriber" class="\MyEventSubscriber"> <tag name="kernel.event_subscriber" /> </service>
测试
所有内容都进行了单元测试
phpunit
查看Travis上的构建:https://travis-ci.org/digitalkaoz/GaufretteBrowserBundle
待办事项
- 改进目录的Tree初始化(也许https://github.com/KnpLabs/materialized-path)
- 使用更复杂的JavaScript-Tree浏览文件(也许http://jquery.bassistance.de/treeview/demo/)
- 更好的文件详情页面
- 功能测试
- 允许更多gaufrette-filesystem实例
- 更强大的存储库查询