如何将CKEditor添加到Sonata Admin后端的textareas

时间:2013-11-28 15:18:32

标签: symfony textarea ckeditor sonata-admin

我想将CKEditor添加到Sonata Admin后端。现在我只运行Create Bundle,它允许我内联编辑内容,但我也想在后端使用编辑器。我尝试过Formatter Widget,但它有点过大,因为我不想在我的实体中创建新的字段。

有没有人这样做过?

4 个答案:

答案 0 :(得分:7)

在您的网页中加入ckeditor脚本,并将ckeditor课程添加到您的textarea,就是这样。

示例:在表单类型中:

$builder->add('description', 'textarea', array('attr' => array('class' => 'ckeditor')))

并在你的树枝上:

   <script src="{{ asset('js/ckeditor.js') }}"></script>
     .
     .
     .
    {{form(form)}}

答案 1 :(得分:7)

zizoujab的解决方案是完全正确的,所以我对它进行了投票。但是,正如我的问题提到了SonataAdminBundle,还需要做更多的事情。这就是我给出这个额外答案的原因。

我通过覆盖自定义捆绑包中的SonataAdminBundle:CRUD:edit.html.twig解决了这个问题:

{% extends 'SonataAdminBundle:CRUD:base_edit.html.twig' %}

{% block javascripts %}
{{ parent() }}
<script src="{{ asset('js/ckeditor/adapter/jquery.js') }}" type="text/javascript"></script>
    <script src="{{ asset('js/ckeditor/ckeditor.js') }}" type="text/javascript"></script>
    <script type="text/javascript">
        $(function() {
            $('textarea.ckeditor').ckeditor();
        });
    </script>
{% endblock %}

此外我遇到了问题,因为我使用的ckeditor版本,这不起作用。我无法使用CmfCreateBundle安装的那个。这会生成一些js错误,<textarea>标记消失了。 所以我不得不从ckeditor.com下载“标准”版本,该版本有效。

答案 2 :(得分:5)

如果您想要一些WYSIWYG编辑器,并且可以使用NOT CKEditor,那么我建议您查看sonata-formatter-bundle

答案 3 :(得分:4)

关注<{>} updated doc

Sonata Formatter

config.yml:

twig:
    debug:            "%kernel.debug%"
    strict_variables: "%kernel.debug%"

    # These 3 lines below were missing in my own conf
    # Adding them made formatter richtext editor alternatives
    # finally available in my project:

    form:
        resources:
            - 'SonataFormatterBundle:Form:formatter.html.twig'

sonata.yml

sonata_block:
    (...)
    blocks:
        (...)
        sonata.block.service.text:
        sonata.page.block.children_pages:
        sonata.formatter.block.formatter:
(...)
sonata_formatter:
    formatters:
        markdown:
            service: sonata.formatter.text.markdown
            extensions:
                - sonata.formatter.twig.control_flow
                - sonata.formatter.twig.gist
                - sonata.media.formatter.twig

        text:
            service: sonata.formatter.text.text
            extensions:
                - sonata.formatter.twig.control_flow
                - sonata.formatter.twig.gist
                - sonata.media.formatter.twig

        rawhtml:
            service: sonata.formatter.text.raw
            extensions:
                - sonata.formatter.twig.control_flow
                - sonata.formatter.twig.gist
                - sonata.media.formatter.twig

        richhtml:
            service: sonata.formatter.text.raw
            extensions:
                - sonata.formatter.twig.control_flow
                - sonata.formatter.twig.gist
                - sonata.media.formatter.twig

        twig:
            service: sonata.formatter.text.twigengine
            extensions: [] # Twig formatter cannot have extensions

    ckeditor:
        templates:
            browser: 'SonataFormatterBundle:Ckeditor:browser.html.twig'
            upload: 'SonataFormatterBundle:Ckeditor:upload.html.twig'