1

我下载了 ckeditor 并希望将其集成到我使用 Symfony 2.5 构建的网站中,从文档中读取似乎所有第三方代码都应该放在vendor目录中,但是然后呢?这就是全部?如果我将所有 ckeditor 代码放在vendor目录中,那么 js 文件呢?他们不进入视野吗?我一直在网上寻找解决方案,他们中的大多数似乎都指向使用在线可用的捆绑包,我想避免这样做,并将其作为我最后的手段。

我之前使用过自定义 php 的 ckeditor,这是我第一次使用 symfony 框架,我知道我们应该创建一个textarea并为其分配一个id或一个class,但我正在寻找的是在此之前的步骤,例如

1)添加ckeditor到vendor

2)将其添加到自动加载或其他东西

3) ...

如果有人能指导我如何做,我将不胜感激?

4

3 回答 3

1

我不确定这是否是正确的方法,但这对我有用。

  1. 我最终复制了ckeditor里面的文件bundle/Resources/public/js
  2. 通过运行命令安装资产php app/console assets:install
  3. 在您的twig文件中添加<script src="{{ asset('bundles/blog/js/ckeditor.js') }}"></script>(请确保将其更改为您的捆绑包名称)
  4. ckeditor为您的领域分配课程textarea,这就是我的做法{{ form_widget(form.description, { 'attr': {'class': 'ckeditor'} }) }}

我可以在我的屏幕上看到编辑器 在此处输入图像描述

如果其他人有更好的主意(除了使用捆绑包),我很想听听他们的意见

于 2014-09-30T14:24:57.023 回答
0

Baigs 的答案会起作用,但是当您在不同的包中使用 CKEditor 时会出现问题,因为您将把整个源目录作为每个包的资产来处理。

另一种解决方案是在您的作曲家中使用“egeloen/ckeditor-bundle”:“~2.0”。

然后,您可以在您的表单中创建一个 ckeditor 输入字段并在您的 twig 文件中引用它。

您还可以根据 CKeditor 手册在您的 twig 页面中直接通过 javascript 创建一个 ckeditor 元素。

<script src="/bundles/ivoryckeditor/ckeditor.js"></script>
....
<textarea id="editor1"></textarea>
...
<script>
CKEDITOR.replace('editor1');
</script>

请注意,自定义插件可能会很痛苦,插件需要存储在项目 web 目录中,但是每次更新作曲家和转储资产时都会删除它。我对此的解决方案是创建一个与 composer 一起运行的项目 scriptHandler,并在更新时将源文件复制到 Web 公共目录中。

于 2014-11-12T15:10:39.473 回答
0

就像马克写的那样,你可以使用 IvoryCKEditorBundle

http://symfony.com/doc/master/bundles/IvoryCKEditorBundle/installation.html

安装后,如果要添加插件,可以使用如下配置:

ivory_ck_editor:
    default_config: default
    plugins:
        block:
            path:     "/bundles/mybundle/js/ckeditor/plugins/block/"
            filename: "plugin.js
   .....
   configs:
      default:
          extraPlugins: "block"
   ....
   toolbars:
      configs:
         default: ["Block"]

就我而言,我有一个名为 MyBundle 的 Symfony 包。在 Resources/public/js 我有我的 js 文件。

当我加载资产时,我的文件被推送到 web 文件夹 /bundles/mybundle/js。

在配置中,我告诉 IvoryCKEditorBundle 在该文件夹中查找新的插件文件。

在我的默认配置之后,我启用了我的新 ckeditor 插件。

在最后一行中,我将新插件添加到工具栏。

于 2016-07-12T15:38:52.807 回答