跳到内容

如何处理文件浏览/上传

编辑此页

在开始之前,请注意此捆绑包中没有任何东西会自动为您处理文件浏览/上传(这超出了范围)。因此,您需要自行实现它,然后在 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 许可获得许可。
目录
    版本