tinymceBundle 的默认配置

Default config of tinymceBundle

我似乎无法为 stfalcon 的 tinymce 包设置默认配置。我按照 here 给出的说明进行操作,但无济于事。

这是我的 config.yml:

stfalcon_tinymce:
    theme:
        advanced:
            plugins:
                - "advlist autolink lists link image charmap print preview anchor"
                - "searchreplace visualblocks code fullscreen"
                - "insertdatetime media table contextmenu paste"
            toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"
            image_advtab: true

我没有为文本区域显示工具栏和插件,而是什么都没有。不知何故,像我所做的那样配置它会扰乱 tinymce 的初始化。有人知道我的错误在哪里吗?

更新

看Firefox的调试工具,好像是这样的代码:

var settings = (typeof options.theme[theme] != 'undefined')
            ? options.theme[theme]
            : options.theme['simple'];

settings.external_plugins = settings.external_plugins || {};

in init.standard.js 是导致问题的原因。 settingssettings.external_plugins = settings.external_plugins || {}; 中未定义。我不知道是什么原因造成的。初始化 tinymce "manually" 是可行的。如果不使用 twig 命令,我不会遇到任何问题,我只是将它放在 html 页面上:

<script type="text/javascript">
tinymce.init({
    selector: "textarea",
    plugins: [
        "advlist autolink lists link image charmap print preview anchor",
        "searchreplace visualblocks code fullscreen",
        "insertdatetime media table contextmenu paste"
    ],
    toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"
});
</script>

这是您必须做的事情的简要清单:

∙ 将资源复制到您的网络文件夹 php app/console assets:install

∙ 在页面底部添加此 {{ tinymce_init() }}(在 javascripts 部分)

∙ 将 tinymce 选择器添加到您的表单属性中:

<?php
    $builder->add('yourtext', 'textarea', array(
        'attr' => array(
            'class' => 'tinymce',
        )
    ));

∙ 并在您的 conf 中配置 tinymce 选择器:

# app/config/config.yml
    stfalcon_tinymce:
        #...
        selector: ".tinymce"

试试看看你是否做到了。

更新

同时查看 Web 浏览器控制台并解决问题(如果有)。

好吧,在修改 init.standard.js 之后,我找到了解决方案。显然,您必须将数据主题属性传递给您想要 tinymceize 的文本区域,该属性对应于您打算在 config.yml 中具有默认配置的主题。否则,init.standard.js 不会将您的配置设置与其 settings 变量相匹配。

在我的例子中,配置的主题是 advanced 所以我只是在我的表单生成器中这样做:

$builder
    // ...
    ->add('text', 'textarea', array(
        'attr' => array(
            'class'      => 'tinymce',
            'data-theme' => 'advanced'
            )
        ))
    // ...

成功了。