如何使用 FOSCKEditorBundle 处理插件的自定义默认值?

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

我想覆盖“table”插件的默认值,例如 cellspadding (txtCellSpace)。

使用:

  • 交响乐:6.4
  • friendsofsymfony/ckeditor-bundle:v2.4(其中包含 CKeditor v4)

如果没有 FOSCKEditorBundle,我们应该在 config.js 文件中添加一些如下代码:

CKEDITOR.on('dialogDefinition', function( ev ) {
  var dialogName = ev.data.name;
  var dialogDefinition = ev.data.definition;
  if(dialogName === 'table') {
    var infoTab = dialogDefinition.getContents('info');
    var cellSpacing = infoTab.get('txtCellSpace');
    cellSpacing['default'] = "0";
  }
});

问题是:我没有 config.js 文件来使此代码正常工作,因为我正在使用 FOSCKEditorBundle。

我尝试覆盖 ckeditor_form.html.twig 以附加一些自定义 JS,如此处记录的: https://symfony.com/bundles/FOSCKEditorBundle/current/usage/append-javascript.html 通过创建一个新的 ckeditor_form .html.twig 放入 Symfony 的模板文件夹中,扩展原始模板文件夹,并使用以下命令将其调用到 backend/config/packages/twig.yaml 中:

  default_path: "%kernel.project_dir%/templates"
    form_themes:
      - "ckeditor_widget.html.twig"

但我的文件从未被调用过。

有人已经尝试过做这样的事情吗?

symfony ckeditor overriding
1个回答
0
投票

覆盖表插件默认值的正确方法是包含自定义 Javascript。

经过多次尝试,我成功做到了,感谢https://symfony.com/doc/6.4/bundles/override.html

twig.yaml

twig:
  default_path: "%kernel.project_dir%/templates"
  form_themes:
    - "bundles/FOSCKEditorBundle/Form/ckeditor_widget.html.twig"

/templates/bundles/FOSCKEditorBundle/Form/ckeditor_widget.html.twig

{% extends '@!FOSCKEditor/Form/ckeditor_widget.html.twig' %}

{% block ckeditor_widget_extra %}
  CKEDITOR.on('dialogDefinition', function( ev ) {
    var dialogName = ev.data.name;
    var dialogDefinition = ev.data.definition;
    if(dialogName === 'table') {
      var infoTab = dialogDefinition.getContents('info');
      var cellSpacing = infoTab.get('txtCellSpace');
      cellSpacing['default'] = "0";
    }
  });
{% endblock %}
© www.soinside.com 2019 - 2024. All rights reserved.