将CKeditor集成到我的symfony 2.5中

时间:2014-09-30 13:38:31

标签: php symfony-2.5

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

我之前使用ckeditor使用自定义php,这是我第一次使用symfony框架,我知道我们应该创建textarea并为其分配idclass但我要找的是之前的步骤,例如

1)将ckeditor添加到vendor

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

3)...

如果有人可以指导我如何做,我将非常感激?

3 个答案:

答案 0 :(得分:1)

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

  1. 我最终复制了ckeditor
  2. 中的bundle/Resources/public/js个文件
  3. 通过运行命令php app/console assets:install
  4. 来安装资产
  5. twig文件中添加<script src="{{ asset('bundles/blog/js/ckeditor.js') }}"></script>(请务必将其更改为您的包名称)
  6. 将班级ckeditor分配到您的textarea字段,我就是这样做的{{ form_widget(form.description, { 'attr': {'class': 'ckeditor'} }) }}
  7. 我可以在屏幕上看到编辑器 enter image description here

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

答案 1 :(得分:0)

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

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

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

你也可以直接通过javascript根据你的树枝页面中的CKeditor手册创建一个ckeditor元素。

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

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

答案 2 :(得分:0)

像mark写的那样你可以使用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插件。

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