当前位置: 首页 > 知识库问答 >
问题:

如何发布在Joomla编辑器中输入的内容-自定义组件

岳浩穰
2023-03-14

我正在为Joomla 3.0开发一个自定义组件,并且在我的一个视图中使用一个编辑器字段。我使用纯HTML和JS开发视图,而不是使用Joomla XML结构。我已经成功地加载并使用了编辑器字段,但是当我使用ajax将表单数据发布到控制器时,编辑器字段没有显示,或者为空。

如何使用ajax将编辑器的内容发布到控制器?

表格代码-

    <form id="servicecategory-form" name="servicecategory-form" enctype="multipart/form-data">
...
<!-- description editor-->
<div class="control-group">
    <label class="control-label">
        <a href="#" data-toggle="tooltip" title="Description">
            Description
        </a>
    </label>
    <div class="controls">
        <?php
        $editor = JFactory::getEditor();
        echo $editor->display('description', '', '270', '300', '50', '10',false);
        ?>
        <p class="help-block"></p>
    </div>
</div>
...
</form>

Javascript代码-

function saveServiceCategory() {
    var form = jsn('#servicecategory-form');

        var formData = form.serialize();

        jsn.ajax({
            type: 'POST',
            url: 'index.php?option=com_centrilliontech_helloworld&task=custom.saveData&tmpl=component&format=raw',
            cache: false,
            data: formData,
            beforeSend: function() {
                jsn('#loading-modal').modal('show');
                console.log('beforeSend');
            }
        })
            .success(function(response) {
                var value = jQuery.parseJSON(response);

                if (value.error) {
                    alertBar('alert-error', 'Service Category', 'Error');
                } else {
                    alertBar('alert-info', 'Service Category', value.message);
                }
            })
            .complete(function() {
                jsn('#loading-modal').modal('hide');
                console.log('complete');
            })
            .error(function() {
                alertBar('alert-danger', 'Service Category', 'Oops! An error occurred. Please try again later.');
            });
}

请假设ajax请求以及与将数据发布到相关控制器相关的任何操作都正常工作,事实上,这里唯一的问题是如何访问编辑器的内容并将其发布到控制器,以便将其保存在数据库中。

提前感谢您的帮助。

共有1个答案

法和安
2023-03-14

下面是我如何通过AJAX传递Joomla编辑器值的:

将编辑器内容保存在隐藏输入中或操作元素上,作为PHP/超文本标记语言端的数据属性:

<input type="hidden" id="element_id" value="<?php echo $editor->save( 'editor_id' ); ?>" />

或者作为按钮上的数据属性:

<a id="element_id" href="javascript:;" data="<?php echo $editor->save( 'editor_id' ); ?>">Submit</a>

然后在Javascript端调用输入值或数据属性,如下所示:

var message = WFEditor.getContent('element_id');

请记住,如果要将html传递给控制器并使用jinput获取值,则需要使用raw,否则它将从中删除html标记。

$message = $jinput->get('message', null, 'raw');
 类似资料:
  • 我正在开发一个定制的joomla组件。我想在我的组件视图中添加joomla编辑器字段。我知道如何使用XML表单文件(models/forms/myview.XML)添加编辑器,但我希望在视图文件(myview/tmpl/default.php)中也这样做,而不使用XML文件字段。可能吗?如果是,那怎么办? 请帮帮忙

  • 我试图让我的Joomla 3组件呈现在URL中指定的布局,但我不明白为什么它坚持显示test.php布局。下面的所有相关代码和我使用的网址是: mysite.com/index.php?option=com_test 也许我完全错了,但我的代码如下: 代码: joomla/组件/组件测试/测试。php: Joomla/组件/com_test/控制器/test.php: joomla/组件/组件测试

  • 我现在正在一个Joomla 2.5网站上工作,我有一个类别,我希望它与网站的其他部分有所不同。比如,导航栏中有一个链接,可以直接将您带到该类别(列出该类别中的所有文章)。我已经设法做到了这一点,但我现在似乎无法修改布局。 我进入了一个现有的模板(beez5),复制了beez5/html/com_content/类别文件夹,并将其粘贴到我的模板文件夹中(所以我有我的模板/html/com_conte

  • 在“SQL 编辑器”选项卡,你可以创建和编辑视图的 SELECT 语句 SQL。Navicat Data Modeler 为编辑视图定义提供广泛的高级功能,例如:编辑代码功能、智能自动完成代码、设置 sql 格式及更多。 【提示】当你在视图创建工具创建视图,SELECT 语句将会自动生成。 美化 SQL(仅适用于非 Essentials 版) 若要格式化凌乱的 SQL 代码到一个结构良好的脚本,你

  • 本文向大家介绍Android自定义View接收输入法输入的内容,包括了Android自定义View接收输入法输入的内容的使用技巧和注意事项,需要的朋友参考一下 前言 可能对于很多新人来讲,看到这个题目,想到的能接收输入法输入的内容大概只有EditText和TextView这两个控件了,其实不然,只要是View的子类,都可以接收输入法输入的内容。 现在我们一步一步来实现,第一步我们得有一个View的

  • {/这是内容组件/} 我做了布局组件,我想在许多不同的内容中使用这个组件。例如,我想在网站中构建四个内容。这个布局是一样的。没有分别重写。 请告诉我如何流畅地插入元件。非常感谢。