Symfony 如何将CKEditor添加到Sonata Admin后端';文本区域

Symfony 如何将CKEditor添加到Sonata Admin后端';文本区域,symfony,textarea,ckeditor,sonata-admin,Symfony,Textarea,Ckeditor,Sonata Admin,我想将CKEditor添加到Sonata管理后端。现在我只运行createbundle,它允许我内联编辑内容,但我也希望在后端使用编辑器。我尝试了Formatter小部件,但它有点过大,因为我不想在实体中创建新字段 有人已经这样做了吗?在页面中包含ckeditor脚本,并将ckeditor类添加到文本区域,仅此而已 示例:在表单类型中: $builder->add('description', 'textarea', array('attr' => array('class' =&g

我想将CKEditor添加到Sonata管理后端。现在我只运行createbundle,它允许我内联编辑内容,但我也希望在后端使用编辑器。我尝试了Formatter小部件,但它有点过大,因为我不想在实体中创建新字段


有人已经这样做了吗?

在页面中包含ckeditor脚本,并将
ckeditor
类添加到文本区域,仅此而已

示例:在表单类型中:

$builder->add('description', 'textarea', array('attr' => array('class' => 'ckeditor')))
在你的小树枝上:

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

.
.
.
{{形式(形式)}}

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 %}
{%extends'SonataAdminBundle:CRUD:base\u edit.html.twig%}
{%block javascripts%}
{{parent()}}
$(函数(){
$('textarea.ckeditor').ckeditor();
});
{%endblock%}
我也有一个问题,因为我使用的是ckeditor的版本,所以这不起作用。我无法使用CmfCreateBundle安装。这产生了一些js错误,
标记消失了。
因此,我不得不从ckeditor.com下载“标准”版本,这很有效。

如果您需要所见即所得编辑器,并且可以使用非ckeditor,-那么我建议在for之后查找一个

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_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'
config.yml:

奏鸣曲.yml


我通过扩展SonataAdminBundle并创建一个CRUD/edit.html.twig来尝试这一点,它包含以下行:
{%extends'SonataAdminBundle:CRUD:base_edit.html.twig%}{%block javascripts%}{{parent()}{%endblock%}
现在,ckeditor.js正确地包含在web/js中,textarea标记具有类“ckeditor”。但是textarea字段根本没有被渲染。SonataAdminBundle是否有任何配置可以防止这种情况发生?这是为我的textarea字段生成的代码:
顺便说一句,我使用IvoryCkeditorBundle得到的结果与在javascript控制台中执行此脚本时的结果相同
CKEDITOR.replaceAll()
您编写的内容是正确的,问题主要是我的CKEDITOR版本和SonataAdminBundle:CRUD模板的重写。但是你的回答非常有用,谢谢。我在问题中写道,我不想使用格式化程序小部件。如果没有这个小部件,你的建议可能吗?你的建议把我弄糊涂了。对不起,我错过了。如果您不知道如何创建一个额外的字段,即使是虚拟字段,我建议您使用enigma bellow提供的解决方案。要使用CmfCreate附带的ckeditor.js,您只需在包含它之前设置
ckeditor_BASEPATH
变量,如下所示:
window.ckeditor_BASEPATH='{app.request.BASEPATH}}/bundles/cmfcreate/vendor/ckeditor/'谢谢!由于某些原因,ckeditor块与其他格式化程序不在同一选项卡上,它给了我一个错误,即“模板”属性未知。将ckeditor与格式化程序放在同一级别修复了此问题!:)