2015-06-30 115 views
1

我遇到了使用Sonata Formatter Bundle的問題。CKEditor未與Sonata格式化程序(Sonata Admin Bundle)一同顯示

在我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' 
    )) 
    ... 

我看到一個文本,但在我的textarea沒有CKEditor的,我缺少什麼? 這是我在瀏覽器中看到的: enter image description here

我也沒有收到任何控制檯錯誤或其他錯誤...。

+0

這可能未必如此,但你有沒有在你的文檔的onload這樣做呢? 'CKEDITOR.replace('productEdit_PO_Note');' –

+0

爲什麼我必須這樣做,我在文檔中找不到它... – nielsv

+0

請檢查http://docs.ckeditor.com/#!/guide/ dev_installation –

回答

3

您需要覆蓋admin layout.html.twig模板,如Sonata Admin Integration of SonataFormatterBundle Documentation部分所述。

創建一個新的模板文件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 
3

這可能有點太晚了你,但我有同樣的問題。我不得不添加在球場上「CKEditor的」類:

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

這使工作