用于cakephp的媒体内容编辑器tinyMCE 3.7

问题描述 投票:0回答:2

我正在使用cakephp 3.7。我尝试通过2种不同的方式使用工作,但它不起作用。首先,我尝试调整前cakephp 2步骤使其工作,如Cakephp文档中所示“https://bakery.cakephp.org/2012/04/11/Helper-TinyMCE-for-CakePHP-2.html”,它在之前的项目中工作,我使用cakephp 2,但在这里它不起作用。其次我跟着另一个教程建议toenter code here在cakephp 3.7的插件文件夹中使用tinymce就像一个插件,但仍然无法正常工作。有关如何为cakephp 3.7安装tinymce的任何帮助吗? N.B:我通过作曲家以及我使用的所有其他插件获得了我的cakephp 3.7,除了我无法用作曲家获得的tinymce。我有这个错误:方法App \ View \ Helper \ TinymceHelper :: domId不存在[CORE / src / View / Helper.php,line。提前致谢。

  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更相关的内容编辑器。谢谢你们!

cakephp tinymce editor
2个回答
0
投票

我从TinyMCE切换到CKEDITOR。我没有任何帮助,只是:

  • 在布局中加载JS(echo $this->Html->script('https://cdn.ckeditor.com/4.8.0/full/ckeditor.js');
  • 根据需要将相关类别(例如wysiwyg_simplewysiwyg_advanced)放在输入上(echo $this->Form->input('description', ['class' => 'wysiwyg_simple']);
  • 有一个如下所示的初始化函数,从onReady调用(并且每当可能包含textarea的动态内容被加载到页面中时)
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';
    });
}

0
投票

经过一段时间的研究和@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将只显示一个空白的textarea)。

3-在相关表单元素中加载ckeditor的地方我使用了语法enter image description here

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

4-在相关布局中我添加了Html-> script('https://cdn.ckeditor.com/4.8.0/full/ckeditor.js');正如Greg Schmidt建议的那样。并且Ckeditor出现了!!!

© www.soinside.com 2019 - 2024. All rights reserved.