如何用FOSCKEditorBundle设置插件自定义默认值(表格插件示例)
解决Symfony 6.4 + FOSCKEditorBundle修改CKEditor4表格默认单元格边距的问题
正确模板重写方案
- 先在项目中创建对应模板路径:
templates/bundles/FOSCKEditorBundle/Form/ - 在该路径下新建
ckeditor_widget.html.twig,内容如下(继承原模板并插入自定义配置):
{% extends '@FOSCKEditor/Form/ckeditor_widget.html.twig' %} {% block ckeditor_widget %} {{ parent() }} <script> 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"; // 要是需要改单元格内边距,也可以加这段: // var cellPadding = infoTab.get('txtCellPad'); // cellPadding['default'] = "0"; } }); </script> {% endblock %}
关键注意事项
- 无需额外修改
twig.yaml的form_themes(如果要配置,路径要写'@FOSCKEditor/Form/ckeditor_widget.html.twig',Symfony会自动优先加载templates/bundles下的自定义模板) - 执行
php bin/console cache:clear清除Symfony缓存,确保新模板生效
备选方案:通过Bundle配置加载自定义JS
如果模板重写还是没效果,可以试试这个方法:
- 在
config/packages/fos_ckeditor.yaml里添加自定义JS文件配置:
fos_ckeditor: default_config: default configs: default: # 保留你原有的其他配置 js: - bundles/fosckeditor/ckeditor.js - build/js/ckeditor-custom.js # 自定义配置文件的路径
- 在
public/build/js/ckeditor-custom.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"; } });
排查要点
- 确认模板路径完全正确:必须是
templates/bundles/FOSCKEditorBundle/Form/ckeditor_widget.html.twig,Bundle名称大小写要匹配 - 检查浏览器控制台有没有JS报错,确保代码能正常执行
- 缓存一定要清,Symfony经常会缓存旧模板导致修改不生效
内容的提问来源于stack exchange,提问作者Auri
相关产品推荐
相关产品推荐

