CKEditor не отображается с Sonata Formatter (пакет администратора Sonata)

У меня возникают проблемы с использованием Пакет форматирования Sonata.

В моем config.yml у меня есть следующее (среди прочего):

imports:
    - { resource: sonata.yml }

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

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

В моем файле sonata.yml есть:

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:
    formatters:
        markdown:
            service: sonata.formatter.text.markdown
            extensions:
                - sonata.formatter.twig.control_flow
                - sonata.formatter.twig.gist
        #        - sonata.media.formatter.twig #keep this commented unless you are using media bundle.


        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'

ivory_ck_editor:
    configs:
        default:
            language:  '%locale%'
            toolbar: standard

sonata_admin:
    templates:
        layout:                 DXEenhanaBundle:Admin:standard_layout.html.twig

Я добавил необходимые CSS и JS в свой файл standard_layout.html.twig, и они правильно загружены.

В моем файле администратора у меня есть следующее:

$formMapper
    ->add('name', 'text', array('label' => 'Applicant Name'))
    ->add('contacts', 'sonata_formatter_type', array(
        'event_dispatcher' => $formMapper->getFormBuilder()->getEventDispatcher(),
        'format_field'   => 'contacts',
        'source_field'   => 'contacts',
        'source_field_options'      => array(
            'attr' => array('class' => 'span10', 'rows' => 7)
        ),
        'ckeditor_context' => 'default',
        'listener'       => true,
        'target_field'   => 'contacts',
        'label' => 'Contacts'
    ))
    ...

Я вижу текстовое поле, но в нем нет ckeditor, что мне не хватает? Вот что я вижу в своем браузере: введите здесь описание изображения

Я также не получаю никаких ошибок консоли или других ошибок ... .


person nielsv    schedule 30.06.2015    source источник
comment
Вероятно, это может быть не так, но вы сделали это в своем документе при загрузке? CKEDITOR.replace( 'productEdit_PO_Note' );   -  person Dipen Shah    schedule 30.06.2015
comment
Зачем мне это делать, я не могу найти это в документации...   -  person nielsv    schedule 30.06.2015
comment
Проверьте docs.ckeditor.com/#!/guide/dev_installation.   -  person Dipen Shah    schedule 30.06.2015
comment
мой идентификатор динамический, поэтому я не могу установить его по идентификатору.   -  person nielsv    schedule 30.06.2015
comment
Надо как-то настроить. Это требование CKEditor. Не могли бы вы также добавить свой код ветки и контроллера?   -  person Dipen Shah    schedule 30.06.2015
comment
Просто добавьте дополнительный класс ckeditor. Последняя версия CKEditor по умолчанию заменяет все элементы, содержащие этот класс.   -  person Artamiel    schedule 30.06.2015


Ответы (3)


Вам необходимо перезаписать шаблон администратора layout.html.twig, как описано в разделе Интеграция администратора Sonata документации SonataFormatterBundle.

Создайте новый файл шаблона app\Resources\SonataAdminBundle\views\layout.html.twig:

{% 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 %}

и обновите свой config.yml следующим образом:

sonata_admin:
    templates:
        layout:  SonataAdminBundle::layout.html.twig
person lordrhodos    schedule 12.11.2015
comment
В Symfony4 вы можете переопределить шаблон пакета, поместив его в templates/bundles/SonataAdminBundle/standard_layout.html.twig - person Gambit; 18.09.2019

Возможно, вам уже поздно, но у меня была такая же проблема. Мне пришлось добавить класс «ckeditor» в поле:

->add('htmlContent', 'sonata_simple_formatter_type', array('format' => 'richhtml', 'attr' => array('class' => 'ckeditor')))

И это заставило его работать

person mioara    schedule 12.12.2016
comment
У меня точно такая же проблема, и все решения здесь не решают ее. Добавление класса ckeditor портит его с SonataNewsBundle. - person kyeno; 05.08.2020

Начиная с SonataAdmin#v0.3, вы можете добавлять активы в конфигурационный файл. документы Formatter

sonata_admin.yaml

sonata_admin:
    assets:
        extra_javascripts:
            # ...
            - bundles/fosckeditor/ckeditor.js
            - bundles/sonataformatter/vendor/markitup-markitup/markitup/jquery.markitup.js
            - bundles/sonataformatter/markitup/sets/markdown/set.js
            - bundles/sonataformatter/markitup/sets/html/set.js
            - bundles/sonataformatter/markitup/sets/textile/set.js

        extra_stylesheets:
            # ...
            - bundles/sonataformatter/markitup/skins/sonata/style.css
            - bundles/sonataformatter/markitup/sets/markdown/style.css
            - bundles/sonataformatter/markitup/sets/html/style.css
            - bundles/sonataformatter/markitup/sets/textile/style.css
person Gambit    schedule 18.09.2019