简体   繁体   English

使用Sonata Admin Bundle和丰富的HTML编辑器的Symfony

[英]Symfony with Sonata Admin Bundle and rich HTML editor

I successfully configured Sonata Admin v3.2 and Sonata Media Bundle in my Symfony 2.8 installation. 我在Symfony 2.8安装中成功配置了Sonata Admin v3.2和Sonata Media Bundle。 As you can see the back-end is working fine: 如您所见,后端工作正常:

在此处输入图片说明

I wanted to render the content property as a rich HTML so I followed the appropriate guide: 我想将content属性呈现为丰富的HTML,因此我遵循了相应的指南:

https://sonata-project.org/bundles/formatter/3-x/doc/reference/formatter_widget.html https://sonata-project.org/bundles/formatter/3-x/doc/reference/formatter_widget.html

I configured the SonataFormatterBundle following the guide step by step but the field doesn't render correctly. 我按照指南逐步配置了SonataFormatterBundle,但该字段无法正确呈现。 This is my config: 这是我的配置:

#Sonata with Symfony >= 2.6
form_themes:
    - 'SonataFormatterBundle:Form:formatter.html.twig'

sonata_block:
    default_contexts: [cms]
    blocks:
        # Enable the SonataAdminBundle block
        sonata.admin.block.admin_list:
            contexts:   [admin]
        # Your other blocks
        sonata.formatter.block.formatter:

sonata_formatter:
ckeditor:
    templates:
        browser: 'SonataFormatterBundle:Ckeditor:browser.html.twig'
        upload: 'SonataFormatterBundle:Ckeditor:upload.html.twig'
default_formatter: richhtml
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

And this is my PostAdmin class: 这是我的PostAdmin类:

protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('title')
        ->add('content', 'sonata_simple_formatter_type', array(
            'format' => 'richhtml',
            'ckeditor_context' => 'default', // optional
        ))
        ->add('category')
    ;
}

The page is not showing any errors but the field stays as a normal textarea (see my above screenshot). 该页面未显示任何错误,但该字段保留为正常的文本区域(请参见上面的屏幕截图)。

So, for those who are not looking into comments: 因此,对于那些不关注评论的人:

The rich text editors in SonataFormatterBundle need some Javascript and Stylesheets to work. SonataFormatterBundle中的RTF编辑器需要一些Javascript和样式表才能工作。 You need to add those in your admin layout template as described here . 您需要按照此处的说明将这些添加到您的管理布局模板中。

Copied from documentation ( Code for Version 3.x ): 从文档复制( 版本3.x的代码 ):

{% extends 'SonataAdminBundle::standard_layout.html.twig' %}

{% block stylesheets %}
{{ parent() }}

<link rel="stylesheet" href="{{ asset('bundles/sonataformatter/markitup/skins/sonata/style.css') }}" type="text/css" media="all" />
<link rel="stylesheet" href="{{ asset('bundles/sonataformatter/markitup/sets/markdown/style.css') }}" type="text/css" media="all" />
<link rel="stylesheet" href="{{ asset('bundles/sonataformatter/markitup/sets/html/style.css') }}" type="text/css" media="all" />
<link rel="stylesheet" href="{{ asset('bundles/sonataformatter/markitup/sets/textile/style.css') }}" type="text/css" media="all" />
{% endblock %}

{% block javascripts %}
{{ parent() }}

<script src="{{ asset('bundles/ivoryckeditor/ckeditor.js') }}" type="text/javascript"></script>
<script src="{{ asset('bundles/sonataformatter/vendor/markitup-markitup/markitup/jquery.markitup.js') }}" type="text/javascript"></script>
<script src="{{ asset('bundles/sonataformatter/markitup/sets/markdown/set.js') }}" type="text/javascript"></script>
<script src="{{ asset('bundles/sonataformatter/markitup/sets/html/set.js') }}" type="text/javascript"></script>
<script src="{{ asset('bundles/sonataformatter/markitup/sets/textile/set.js') }}" type="text/javascript"></script>
{% endblock %}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM