Laravel渲染差分控制器方法

时间:2015-06-30 16:01:36

标签: laravel methods render paginate

我正在使用Laravel 5中的render()方法。 当运行$ whatever-> render()时,它默认将控制器方法名称作为路径。

实施例: 当我在DelasController @ updateFilter中运行此命令时,分页路径设置为whatever.com/marketplace /updateFiler?page = 2,这对我来说没有意义。

问题: 我想保持路线像whatevermarketmarket?page = 2一样简单。

问题: 任何人都可以给我一个如何解决这个问题的提示吗?

感谢您的时间和讨论。 期待回复。

1 个答案:

答案 0 :(得分:0)

我有一个应用程序,其中各种分页列表显示在" windows"在页面上,并通过AJAX调用更新到服务器。以下是我的表现方式:

设置一个渲染整个页面的路线,如下所示:

Route::get('/marketplace', function ($arguments) {
    ....
});

设置一条路线,返回列表的当前页面。例如,它可能是这样的:

Route::get('/marketplace/updateFiler', function ($arguments) {
    ....
});

在页面的Javascript代码中,您需要更改分页链接,以便不是使用链接的URL加载新页面,而是向第二个路径发出AJAX请求。 Javascript看起来像这样:

$('ul.pagination a').on('click', function (event) {
    // stop the default action
    event.stopPropagation();
    event.preventDefault();

    // get the URL from the link
    var url = $(event.currentTarget).attr('href');

    // get the page number from the URL
    var page = getURLParameterByName(url, 'page');

    $.get('marketplace/updateFiler', { page: page }, function (data){
        // do something with the response from the server
    });
});

getURLParameterByName函数只是一个从URL中提取命名参数的帮助器:

var getURLParameterByName = function (url, name, defaultValue) {
    // is defaultValue undefined? if so, set it to false
    //
    if (typeof defaultValue === "undefined") {
        defaultValue = false;
    }

    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
    results = regex.exec(url);
    return results === null ? 
        defaultValue : 
        decodeURIComponent(results[1].replace(/\+/g, " "));
};

我根据Stack Overflow上的答案改编了这段代码:https://stackoverflow.com/a/901144/2008384