【问题标题】:Trigger Ajax request on settings page在设置页面触发 Ajax 请求
【发布时间】:2018-06-23 20:37:01
【问题描述】:

我正在编写一个插件,它在后端设置中定义了一些字段。

其中一个字段是包含一个按钮的部分字段,由于数据属性 API,它会触发 Ajax 请求。

<button type="button" class="btn btn-danger" data-request="onReset">
    My button
</button>

我应该把“onReset()”函数放在哪里?我试图把它放在我的设置模型中,甚至试图创建一个设置控制器(虽然没有必要使用设置页面),但我总是收到以下错误:

Ajax handler 'onReset' was not found

我不知道该怎么做才能触发onReset() 功能,熟悉Laravel / OctoberCMS 的人可以指出正确的方向吗?

谢谢

【问题讨论】:

  • 您可以内联(丑陋)&lt;button type="button" class="btn btn-danger" data-request="onReset" onclick="onReset()"&gt; 或创建一个单独的 .js 文件,该文件包含在页面上(带有脚本标签)就在 body 结束标签之前注册一个加载文档时的事件处理程序。

标签: ajax laravel laravel-5 octobercms octobercms-plugins


【解决方案1】:

在 HTML 表单中,如果你有一个 onReset 事件,你可以在里面添加你的调用:

function updateForm()
{
    $.each($('form').find(":input"), function(){  
        $.uniform.update($(this));  
    });  
}

<form onReset="updateForm();">

在这个link 中,您可以在点击事件中进行自己的排序:

$(document).ready(function() {
    $("input:reset").click(function() {       /click event
        this.form.reset();                    
        window.alert($("input:text").val());       
        return false;                          
    });
});

【讨论】:

  • 这是错误的上下文,他说的是 10 月份的 CMS 服务器端,所以它不会工作
【解决方案2】:

设置由\System\Controllers\Settings 呈现,因此您编写的任何内容都将由\System\Controllers\Settings 控制器类处理,

所以我们需要扩展\System\Controllers\Settings,我们可以添加动态 方法在那里,

在您的plugin's boot method 中,您需要编写此扩展代码

在此示例中,我将您的 onReset 处理程序重命名为 onPrefixReset 以避免任何其他冲突。

public function boot() {

    \System\Controllers\Settings::extend(function($model) {

        $model->addDynamicMethod('onPrefixReset', function() {
            \Flash::success('You did it!');
            // OR
            //return ['some data data'];
        });
    });
}

onPrefixReset:我们在这里添加了一些Prefix,所以我们无意中没有覆盖内部原始方法。

现在在你的_partial

<button type="button" class="btn btn-danger" data-request="onPrefixReset">
    My button
</button>

所以现在这个 onPrefixReset ajax 处理程序是在\System\Controllers\Settings 中定义的,因为我们是动态地这样做的;)它将处理您的请求。

您可以从这里返回任何数据,它会在back-end settings page 收到。

【讨论】:

猜你喜欢
  • 2016-03-02
  • 2012-03-01
  • 2015-08-02
  • 2014-02-24
  • 2019-07-17
  • 2016-04-14
  • 2011-08-02
  • 1970-01-01
  • 2019-02-13
相关资源
最近更新 更多