我正在使用Laravel 5中的render()方法。 当运行$ whatever-> render()时,它默认将控制器方法名称作为路径。
实施例: 当我在DelasController @ updateFilter中运行此命令时,分页路径设置为whatever.com/marketplace /updateFiler?page = 2,这对我来说没有意义。
问题: 我想保持路线像whatevermarketmarket?page = 2一样简单。
问题: 任何人都可以给我一个如何解决这个问题的提示吗?
感谢您的时间和讨论。 期待回复。
答案 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。