Редактор медиа-контента tinyMCE для cakephp 3.7 - PullRequest
0 голосов
/ 10 апреля 2019

Я использую CakePHP 3.7.Я пытался заставить работать tinymce, двумя способами, но это не работает.Во-первых, я попытался адаптировать предыдущие шаги к cakephp, чтобы он работал так, как показано в документации по торту здесь: "https://bakery.cakephp.org/2012/04/11/Helper-TinyMCE-for-CakePHP-2.html", это работало в предыдущем проекте, где я использовал cakephp 2, но здесь это не сработало. Во-вторых, япоследовал другой учебник, предлагающий enter code here использовать tinymce внутри папки плагинов cakephp 3.7, как плагин, но все еще не работает. Любая помощь о том, как установить tinymce для cakephp 3.7? NB: я также получил свой cakephp 3.7 через composerкак и все другие плагины, которые я использовал, за исключением tinymce, который я не могу получить с помощью composer. У меня возникает эта ошибка: Метод App \ View \ Helper \ TinymceHelper :: domId не существует [CORE / src / View / Helper.phpЗаранее спасибо.

  1. Я скачал tinymce и настроил его в папке webroot / js
  2. В AppController.php я добавил public $helpers = ['tinymce.tinymce'];
  3. В представлении, где отобразить редактор tinymce, я добавил в соответствующую текстовую область

    <?php echo $this->Tinymce->input('content', 
           array('label' => 
             'Content'),array('language'=>'en'),'bbcode'); 
     ?>
    

    Это моя голова в tinymceHelper.php

      use Cake\View\Helper;
      use Cake\View\StringTemplateTrait;

            class TinymceHelper extends Helper 
         {

        // Take advantage of other helpers
        public $helpers = array('Js', 'Html', 'Form');
       ...}

Или, может быть, вы также знаете другого редактора контента, более подходящего для cakephp 3.7.Спасибо вам, ребята!

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

После определенного времени исследований и по предложению @Greg Schmidt я получил Ckeditor не как плагин, а внутри папки js.1- Я ссылался на него в AppController.php с

public $ helpers = ['CkEditor.Ck'];

2- В media.ctp я вызывал Ckeditor в головефайла "

<?php echo $this->Html->script('ckeditor/ckeditor');?>

(Это очень обязательно, потому что без этого вызова cakephp 3.x будет отображать только пустую текстовую область).

3- В соответствующем элементе формы, гдезагрузить ckeditor Я использовал синтаксис введите описание изображения здесь

<?= echo $this->Ck->input('Media_Content', array('class', 'ckeditor); ?>

4- В соответствующем макете я добавил Html-> script ('https://cdn.ckeditor.com/4.8.0/full/ckeditor.js');?> Так же, как предложил Грег Шмидт. И Ckeditor появляется !!!

0 голосов
/ 12 апреля 2019

Я перешел с TinyMCE на CKEDITOR. У меня нет никакого помощника, просто:

  • загрузить JS в макет (echo $this->Html->script('https://cdn.ckeditor.com/4.8.0/full/ckeditor.js');)
  • помещать соответствующие классы (например, wysiwyg_simple или wysiwyg_advanced) на входы по мере необходимости (echo $this->Form->input('description', ['class' => 'wysiwyg_simple']);)
  • имеет функцию инициализации, как показано ниже, которая вызывается из onReady (а также всякий раз, когда на страницу загружается динамическое содержимое, которое может содержать текстовую область)
if (typeof CKEDITOR !== 'undefined') {
    for(name in CKEDITOR.instances) {
        CKEDITOR.instances[name].destroy(true);
    }
    CKEDITOR.replaceAll(function (textarea, config) {
        if (jQuery(textarea).hasClass('wysiwyg_advanced')) {
            config.toolbar = [
                {
                    name: 'clipboard',
                    items: ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo']
                },
                {name: 'editing', items: ['SpellChecker', 'Scayt']},
                {name: 'links', items: ['Link', 'Unlink', 'Anchor']},
                {name: 'insert', items: ['Image', 'Table', 'HorizontalRule', 'SpecialChar', 'PageBreak']},
                '/',
                {
                    name: 'basicstyles',
                    items: ['Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'RemoveFormat']
                },
                {
                    name: 'paragraph',
                    items: ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote', 'CreateDiv',
                        '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock']
                },
                '/',
                {name: 'styles', items: ['Format', 'Font', 'FontSize']},
                {name: 'colors', items: ['TextColor', 'BGColor']},
                {name: 'tools', items: ['Maximize', 'ShowBlocks', '-', 'About']},
                {name: 'document', items: ['Source']}
            ];
        } else if (jQuery(textarea).hasClass('wysiwyg_simple')) {
            config.toolbar = [
                {name: 'clipboard', items: ['Cut', 'Copy', 'PasteText', '-', 'Undo', 'Redo']},
                {
                    name: 'basicstyles',
                    items: ['Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'RemoveFormat']
                },
                {name: 'paragraph', items: ['NumberedList', 'BulletedList']},
                {name: 'styles', items: ['Format']}
            ];
        } else {
            return false;
        }
        config.resize_dir = 'both';
    });
}
...