我已经设置了分页并且它工作正常。但我无法重定向到当前页面。
例如:如果我在
currencies?page=2
上调用更新方法。我将重定向到 currencies
而不是 currencies?page=2
。
Controller - index function
public function index()
{
$currencies = Currency::paginate(5);
return view('admin.currencies.index')
->withCurrencies($currencies);
}
Controller - Edit function
public function edit($id)
{
$currency = Currency::findOrFail($id);
return view('admin.currencies.edit')
->withCurrency($currency);
}
Controller - Update function
public function update(Request $request, $id)
{
$currency = Currency::findOrFail($id);
$currency->name = $request->name;
$currency->rate = $request->rate;
$currency->save();
return redirect()->route('currencies.index')->with('message', 'Done');
}
Views
{{ $currencies->links() }}
查看此处的文档 https://laravel.com/docs/5.5/pagination#paginator-instance-methods
您可以跟踪页码(如果更新在不同页面上,则从引用 URL 中获取,或者从查询参数中获取)并像这样在更新函数中传递该页码,而不是重定向到路由。
//$page = grab page number from the query param here.
return redirect('currencies?page='.$page);
或者您也可以修改索引控制器,在其中将页码作为可选参数传递,如果为 null,则默认为第 1 页,如果存在,则将其传入。
$results->url($page)
祝你好运。
如果有人必须重定向到当前页面或任何页面并使用命名路由。
测试:Laravel 5
一些假设。
路线:
$this->get('/favourite/{columnSorted?}/{sortOrder?}', 'Favourites@index')->name('favourite.list');
浏览器中假设的项目网址:
列排序:'标题' 排序顺序:desc
http://yoursite.net/favourite/title/desc?page=3
现在,命名路由重定向到第 3 页。
正如您在上面的路由中看到的,columnSorted 和 sortOrder 是动态的(?在路由中的参数之后,例如:{sortOrder?})。
这意味着该路线可以同时拥有两者,也可以只有一个或没有。
如果你想将它们传递给路由中的参数数组,你可以这样做:
/*准备重定向到用户参数所在的位置*/ $routeParams = []; $q = '?'; if ($request->columnSorted) { $routeParams['columnSorted'] = $request->columnSorted; } if ($request->sortOrder) { $routeParams['sortOrder'] = $request->sortOrder; $q = ''; } if ($请求->页面) { $routeParams[] = $q 。 '页=' . $请求->页面; } return redirect()->route('favourite.list', $routeParams);
注意上面的“$q”参数。
最后一个(也是唯一最后一个)路由参数 $q 不得传递“?”,否则从命名路由构造的路由将具有双“??”看起来像:
http://yoursite.net/favourite/title/desc??page=3
...重定向将会失败。
您可以从请求中获得的页码:
$request->get('页面'); // 或者 $请求->页面
...并将其传递给将进行重定向的方法。
您必须向路线添加查询字符串参数。
return redirect()
->route('currencies.index', ['page' => $request->get('page', 1)])
->with('message', 'Done');
$results->url($result->currentPage())
为您提供当前页面的网址