如何处理文件浏览/上传
在开始之前,请注意此捆绑包中没有任何东西会自动为您处理文件浏览/上传(这超出了范围)。因此,您需要自行实现它,然后在 CKEditor 配置或小部件中配置您的浏览/上传 URI 或路由。
支持的选项
CKEditor 原生支持不同的选项,具体取决于您要浏览或上传的内容。这些选项应该是指向您的控制器的 URI。可用的选项有
- filebrowserBrowseUrl
- filebrowserFlashBrowseUrl
- filebrowserImageBrowseUrl
- filebrowserImageBrowseLinkUrl
- filebrowserUploadUrl
- filebrowserFlashUploadUrl
- filebrowserImageUploadUrl
自定义选项
如果您安装插件,CKEditor 还支持自定义选项。例如,HTML5 视频插件添加了以下选项
- filebrowserVideoBrowseUrl
- filebrowserVideoUploadUrl
为了使捆绑包了解这些新选项,您可以在配置文件中全局配置它
1 2 3 4 5
# app/config/config.yml
fos_ck_editor:
filebrowsers:
- VideoBrowse
- VideoUpload
或者您可以在小部件中配置它
1 2 3 4 5 6
$builder->add('field', 'ckeditor', [
'filebrowsers' => [
'VideoUpload',
'VideoBrowse',
],
]);
路由选项
为了简化 CKEditor 文件处理,捆绑包添加了 CKEditor 默认情况下没有的选项。这些选项与 Symfony 路由组件 相关,并允许您配置路由而不是 URI。对于每个 *Url
选项,都有三个新选项可用。
例如,filebrowserBrowseUrl
选项可以使用这三个新选项生成
- filebrowserBrowseRoute
- filebrowserBrowseRouteParameters
- filebrowserBrowseRouteType
静态路由
如果您的路由是静态的,您可以在配置中全局配置这些选项
1 2 3 4 5 6 7 8
# app/config/config.yml
fos_ck_editor:
default_config: my_config
configs:
my_config:
filebrowserBrowseRoute: "my_route"
filebrowserBrowseRouteParameters: { slug: "my-slug" }
filebrowserBrowseRouteType: 0
或者您可以在小部件中配置它
1 2 3 4 5 6 7
$builder->add('field', 'ckeditor', [
'config' => [
'filebrowserBrowseRoute' => 'my_route',
'filebrowserBrowseRouteParameters' => ['slug' => 'my-slug'],
'filebrowserBrowseRouteType' => UrlGeneratorInterface::ABSOLUTE_URL,
],
]);
动态路由
如果静态路由不符合您的需求,您可以使用 filebrowser*Handler
选项,允许您使用简单但更强大的闭包构建自己的 URL,从而使其了解您的依赖项
1 2 3 4 5 6 7 8 9 10 11 12 13 14
// A blog post...
$post = $manager->find($id);
$builder->add('field', 'ckeditor', [
'config' => [
'filebrowserBrowseHandler' => function (RouterInterface $router) use ($post) {
return $router->generate(
'my_route',
['slug' => $post->getSlug()],
UrlGeneratorInterface::ABSOLUTE_URL
);
},
],
]);
与其他项目的集成
如果您想简化您的生活,您可以直接使用其他捆绑包,这些捆绑包已经集成了上一章中解释的概念。
Sonata 集成
CoopTilleulsCKEditorSonataMediaBundle 提供了 SonataMedia 与此捆绑包的集成。
ELFinder 集成
FMElfinderBundle 提供了 ELFinder 与此捆绑包的集成。
这项工作,包括代码示例,根据 Creative Commons BY-SA 3.0 许可获得许可。