Symfony2 TinymceBundle - 更新后CTRL-S不保存

时间:2013-02-21 13:21:52

标签: php symfony tinymce

我正在开发一个PHP-web应用程序,它使用TinymceBundle来设置文本框的样式为WYSIWYG-Editors(我接管了那个项目,我最初没有实现这个功能)。

标准的tinyMCE编辑器显然具有内置功能,可捕获CTRL + S Click事件并将其视为表单提交(而不是尝试保存当前站点的浏览器)。< / p>

但是现在我更新了供应商库,包括TinymceBundle和CTRL + S以保存表单不再有用。

这是我在app/config.yml中找到它的小部件的配置:

stfalcon_tinymce:
    include_jquery: true
    textarea_class: "tinymce"
    theme:
        simple:
            mode: "textareas"
            theme: "advanced"
            width: '728' #firefox on windows made it too wide for some reason
            theme_advanced_buttons1: "mylistbox,mysplitbutton,bold,italic,underline,separator,strikethrough,justifyleft,justifycenter,justifyright,justifyfull,bullist,numlist,undo,redo,link,unlink"
            theme_advanced_buttons2: ""
            theme_advanced_buttons3: ""
            theme_advanced_toolbar_location: "top"
            theme_advanced_toolbar_align: "left"
            theme_advanced_statusbar_location: "bottom"
            plugins: "fullscreen"
            theme_advanced_buttons1_add: "fullscreen"
        advanced:
            language: de
            theme: "advanced"
            plugins: "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,noneditable,visualchars,nonbreaking,xhtmlxtras,template"
            theme_advanced_buttons1: "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,formatselect,fontselect,fontsizeselect"
            theme_advanced_buttons2: "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,cleanup,code,|,insertdate,inserttime,preview,|,forecolor,backcolor"
            theme_advanced_buttons3: "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,|,ltr,rtl,|,fullscreen"
            theme_advanced_buttons4: "moveforward,movebackward,|,scite,del,ins,|,visualchars,nonbreaking,pagebreak"
            theme_advanced_toolbar_location: "top"
            theme_advanced_toolbar_align: "left"
            theme_advanced_statusbar_location: "bottom"
            theme_advanced_resizing: true

对于我所看到的,没有什么专门启用CTRL + S保存功能,所以我认为它默认启用,但现在我需要一些东西再次启用它(因为客户在更新后遗漏了它)我在tinyMCE documentation找不到配置选项。

保留旧版本并非真正的选择。

是否有人知道如何手动启用CTRL + S =表单提交功能在更新TinymceBundle后也会遇到此行为(如果这是一个错误我猜想,我不能做很多事情吗?

提前致谢!

编辑:以下是应用程序中用于呈现编辑器的代码 - 遗憾的是,几乎所有JS初始化都封装在TinymceBundle中,甚至是{{1} } call - 整个配置应该适用于tinyMCE.init( ... )

中的条目

包含文本字段的app/config.ym类:

NoticeType

在呈现表单的模板中:

class NoticeType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder
        ->add('contact')
        ->add('user')
        ->add('direction', 'choice', array(
                        'choices'   => array('out' => 'Ausgehend', 'in' => 'Eingehend', ),
                        'required'  => true,
        ))
        ->add('text', 'textarea', array(
            'attr' => array('class' => 'tinymce'),
        ))
        ->add('customer')
        ->add('date', 'datetime', array(
                'input'  => 'datetime',
                // 'date_format' => \IntlDateFormatter::FULL,
                'widget' => 'single_text',
        ))
        ;
    }

    public function getName()
    {
        return 'evenos_enoticebundle_noticetype';
    }
}

已更新问题:有人知道我如何使用{% extends 'EvenosEnoticeBundle::base.html.twig' %} {% block body %} <h1>Neue Notiz</h1> {{ tinymce_init() }} <form action="{{ path('notice_create') }}" method="post" {{ form_enctype(form) }}> [...other fields...] {{ form_label(form.text, 'Text') }} {{ form_widget(form.text, { 'attr': {'cols': '100', 'rows': 20} }) }} [...] <p> <button type="submit" class="btnCreate">Anlegen</button> </p> </form> [...] {% endblock %} Stfalcon/TinymceBundle专门配置tinyMCE 吗?。当我掌握它时,它意味着只能通过symfony Symfony2文件进行配置,这些文件不允许您添加例如像

这样的功能
.yml

tinyMCE的配置

1 个答案:

答案 0 :(得分:0)

你可以实施像我建议here这样的问题。

编辑:这是symfone/tinymce的优秀教程。在“覆盖渲染方法”部分中,插入设置配置参数,如下所示

tinyMCE.init({
    ...

    setup : function(ed) {
        ed.onKeyDown.add(function onkeydown(ed, evt) {
            // Shortcut:  ctrl+h 
            if (evt.keyCode == 72 && !evt.altKey && !evt.shiftKey && evt.ctrlKey && !evt.metaKey) {
                setTimeout(function(){
                    var e = { type : 'keydown'};
                    e.charCode = e.keyCode = e.which = 72;
                    e.shiftKey = e.altKey = e.metaKey = false;
                    e.ctrlKey = true;
                    window.parent && window.parent.receiveShortCutEvent && window.parent.receiveShortCutEvent(e);
                }, 1);
            }
        });
    },
});

现在,您在模板中插入包含javascript函数receive_shortcutevents的脚本标记。