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

时间:2015-01-28 13:03:31

标签: php ajax joomla joomla3.0

我正在为Joomla 3.0开发一个自定义组件,并在我的一个视图中使用编辑器字段。我使用纯HTML和JS开发我的视图,而不是使用Joomla XML Structure。我已成功加载并使用编辑器字段,但是当我使用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 个答案:

答案 0 :(得分:0)

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

将编辑器内容保存在隐藏的输入中,或者将操作元素保存为PHP / HTML端的数据属性:

<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');