CKFinder 是一个 Ajax 应用,其前端完全用 JavaScript 编写。它通过 JSON 消息与服务器通信。在服务器端,有一个用特定服务器语言编写的“连接器”,它处理前端请求。下图说明了这一点
用于 PHP 的 CKFinder 3 连接器构建在以下 Symfony 2 组件之上
Pimple 用作依赖注入容器。
Flysystem 文件系统抽象层用于与多个 CKFinder 后端进行通信。
CKFinder 主应用类,CKFinder,扩展了 Pimple\Container
并充当依赖注入容器(方法灵感来自 Silex)。所有定义的依赖项以延迟方式实例化 - 对象仅在应用生命周期中实际使用时才创建。
您可以在容器内部访问以下应用组件
键 | 对象类型 | 描述 |
---|---|---|
acl | Acl | CKFinder 访问控制列表。 |
backend_manager | BackendFactory | 负责后端实例化的工厂对象。 |
config | Config | CKFinder 配置。 |
csrf_token_validator 3.2.0 | DoubleSubmitCookieTokenValidator | 用于验证请求中的 CSRF 令牌的 TokenValidatorInterface 的实现。 |
debug | 布尔值 | 指示应用是否在调试模式下运行的布尔标志。 |
dispatcher | EventDispatcher | 一个 Symfony EventDispatcher 实例。 |
exception_handler | ExceptionHandler | 异常处理程序。 |
kernel | HttpKernel | 一个 Symfony HttpKernel 。 |
logger | Monolog\Logger | 一个 Psr\Log\LoggerInterface 实例(默认情况下使用 FirePHPHandler 的 Monolog\Logger )。 |
request_stack | RequestStack | 一个 Symfony RequestStack 。 |
command_resolver | CommandResolver | CKFinder 命令解析器。 |
request_transformer 3.1.1 | JsonTransformer | 用于将请求转换为连接器可以理解的格式的请求转换器实例。 |
working_folder | WorkingFolder | CKFinder WorkingFolder 对象,表示由资源类型及其后端、后端的根文件夹和在 currentFolder URL 参数中传递的相对路径定义的当前工作目录。 |
CKFinder PHP 连接器提供了一组事件,可用于更改默认应用行为。每个事件都由其唯一的名称标识,并且可以被任意数量的侦听器监听。
要将侦听器附加到事件,您可以使用存储在应用依赖注入容器中的 dispatcher
对象
您也可以使用 CKFinder::on() 简写方法
在 HOWTO 的 磁盘配额 和 记录用户操作 部分,您可以找到两个使用事件的示例插件。
这些事件在解析特定命令后触发,即决定应使用哪个命令类来处理当前请求。使用以下命名约定
例如:ckfinder.beforeCommand.init
、ckfinder.beforeCommand.deleteFiles
。
传递给事件侦听器的参数是 BeforeCommandEvent 类型的对象,它包含以下信息
CKFinder
应用对象(如所有 CKFinder 事件)。在事件侦听器中,可以提供将在命令之前执行的任何其他代码,但也可以替换事件对象中包含的命令对象,因此将使用新提供的命令对象。提供的命令对象必须是有效的命令对象(即 CommandAbstract
类型的对象)。
请注意,这是一个通用事件,也可以用于插件提供的任何未在下面列出的命令。
事件名称 | CKFinderEvent 常量 |
---|---|
ckfinder.beforeCommand.init | CKFinderEvent::BEFORE_COMMAND_INIT |
ckfinder.beforeCommand.copyFiles | CKFinderEvent::BEFORE_COMMAND_COPY_FILES |
ckfinder.beforeCommand.createFolder | CKFinderEvent::BEFORE_COMMAND_CREATE_FOLDER |
ckfinder.beforeCommand.deleteFiles | CKFinderEvent::BEFORE_COMMAND_DELETE_FILES |
ckfinder.beforeCommand.deleteFolder | CKFinderEvent::BEFORE_COMMAND_DELETE_FOLDER |
ckfinder.beforeCommand.downloadFile | CKFinderEvent::BEFORE_COMMAND_DOWNLOAD_FILE |
ckfinder.beforeCommand.fileUpload | CKFinderEvent::BEFORE_COMMAND_FILE_UPLOAD |
ckfinder.beforeCommand.getFiles | CKFinderEvent::BEFORE_COMMAND_GET_FILES |
ckfinder.beforeCommand.getFileUrl | CKFinderEvent::BEFORE_COMMAND_GET_FILE_URL |
ckfinder.beforeCommand.getFolders | CKFinderEvent::BEFORE_COMMAND_GET_FOLDERS |
ckfinder.beforeCommand.getResizedImages | CKFinderEvent::BEFORE_COMMAND_GET_RESIZED_IMAGES |
ckfinder.beforeCommand.imageEdit | CKFinderEvent::BEFORE_COMMAND_IMAGE_EDIT |
ckfinder.beforeCommand.imageInfo | CKFinderEvent::BEFORE_COMMAND_IMAGE_INFO |
ckfinder.beforeCommand.imagePreview | CKFinderEvent::BEFORE_COMMAND_IMAGE_PREVIEW |
ckfinder.beforeCommand.imageResize | CKFinderEvent::BEFORE_COMMAND_IMAGE_RESIZE |
ckfinder.beforeCommand.moveFiles | CKFinderEvent::BEFORE_COMMAND_MOVE_FILES |
ckfinder.beforeCommand.quickUpload | CKFinderEvent::BEFORE_COMMAND_QUICK_UPLOAD |
ckfinder.beforeCommand.renameFile | CKFinderEvent::BEFORE_COMMAND_RENAME_FILE |
ckfinder.beforeCommand.renameFolder | CKFinderEvent::BEFORE_COMMAND_RENAME_FOLDER |
ckfinder.beforeCommand.saveImage | CKFinderEvent::BEFORE_COMMAND_SAVE_IMAGE |
ckfinder.beforeCommand.thumbnail | CKFinderEvent::BEFORE_COMMAND_THUMBNAIL |
这些事件在命令类内部触发,在任何重要操作(如上传文件、重命名、删除、移动文件和文件夹)发生之前。
事件名称 | CKFinderEvent 常量 | 传递给侦听器的参数 |
---|---|---|
ckfinder.copyFiles.copy | CKFinderEvent::COPY_FILE | CopyFileEvent |
ckfinder.createFolder.create | CKFinderEvent::CREATE_FOLDER | CreateFolderEvent |
ckfinder.deleteFiles.delete | CKFinderEvent::DELETE_FILE | DeleteFileEvent |
ckfinder.deleteFolder.delete | CKFinderEvent::DELETE_FOLDER | DeleteFolderEvent |
ckfinder.downloadFile.download | CKFinderEvent::DOWNLOAD_FILE | DownloadFileEvent |
ckfinder.uploadFile.upload | CKFinderEvent::FILE_UPLOAD | FileUploadEvent |
ckfinder.moveFiles.move | CKFinderEvent::MOVE_FILE | MoveFileEvent |
ckfinder.renameFile.rename | CKFinderEvent::RENAME_FILE | RenameFileEvent |
ckfinder.renameFolder.rename | CKFinderEvent::RENAME_FOLDER | RenameFolderEvent |
ckfinder.saveImage.save | CKFinderEvent::SAVE_IMAGE | EditFileEvent |
ckfinder.imageEdit.save | CKFinderEvent::EDIT_IMAGE | EditFileEvent |
ckfinder.thumbnail.createThumbnail | CKFinderEvent::CREATE_THUMBNAIL | ResizeImageEvent |
ckfinder.imageResize.createResizedImage | CKFinderEvent::CREATE_RESIZED_IMAGE | ResizeImageEvent |
这些事件在特定命令控制器方法(Command::execute()
)返回响应后触发。使用以下命名约定
传递给事件侦听器的参数是 AfterCommandEvent 类型的对象,它包含以下信息
CKFinder
应用对象。Response
对象。请注意,这是一个通用事件,也可以用于任何插件提供的命令。
事件名称 | CKFinderEvent 常量 |
---|---|
ckfinder.afterCommand.init | CKFinderEvent::AFTER_COMMAND_INIT |
ckfinder.afterCommand.copyFiles | CKFinderEvent::AFTER_COMMAND_COPY_FILES |
ckfinder.afterCommand.createFolder | CKFinderEvent::AFTER_COMMAND_CREATE_FOLDER |
ckfinder.afterCommand.deleteFiles | CKFinderEvent::AFTER_COMMAND_DELETE_FILES |
ckfinder.afterCommand.deleteFolder | CKFinderEvent::AFTER_COMMAND_DELETE_FOLDER |
ckfinder.afterCommand.downloadFile | CKFinderEvent::AFTER_COMMAND_DOWNLOAD_FILE |
ckfinder.afterCommand.fileUpload | CKFinderEvent::AFTER_COMMAND_FILE_UPLOAD |
ckfinder.afterCommand.getFiles | CKFinderEvent::AFTER_COMMAND_GET_FILES |
ckfinder.afterCommand.getFileUrl | CKFinderEvent::AFTER_COMMAND_GET_FILE_URL |
ckfinder.afterCommand.getFolders | CKFinderEvent::AFTER_COMMAND_GET_FOLDERS |
ckfinder.afterCommand.getResizedImages | CKFinderEvent::AFTER_COMMAND_GET_RESIZED_IMAGES |
ckfinder.afterCommand.imageEdit | CKFinderEvent::AFTER_COMMAND_IMAGE_EDIT |
ckfinder.afterCommand.imageInfo | CKFinderEvent::AFTER_COMMAND_IMAGE_INFO |
ckfinder.afterCommand.imagePreview | CKFinderEvent::AFTER_COMMAND_IMAGE_PREVIEW |
ckfinder.afterCommand.imageResize | CKFinderEvent::AFTER_COMMAND_IMAGE_RESIZE |
ckfinder.afterCommand.moveFiles | CKFinderEvent::AFTER_COMMAND_MOVE_FILES |
ckfinder.afterCommand.quickUpload | CKFinderEvent::AFTER_COMMAND_QUICK_UPLOAD |
ckfinder.afterCommand.renameFile | CKFinderEvent::AFTER_COMMAND_RENAME_FILE |
ckfinder.afterCommand.renameFolder | CKFinderEvent::AFTER_COMMAND_RENAME_FOLDER |
ckfinder.afterCommand.saveImage | CKFinderEvent::AFTER_COMMAND_SAVE_IMAGE |
ckfinder.afterCommand.thumbnail | CKFinderEvent::AFTER_COMMAND_THUMBNAIL |
您也可以监听由 HttpKernel 组件分派的任何事件。请参阅 HttpKernel 事件信息表
有关事件和事件侦听器的更多信息,请阅读 Symfony EventDispatcher 组件 的文档。