我已经设置了分页,并且可以正常工作。但是我无法重定向到当前页面。
例如:如果我在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() }}
答案 0 :(得分:1)
在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)
祝你好运。
答案 1 :(得分:1)
如果有人必须重定向到当前页面或任何页面并使用命名路由。
经过测试:Laravel 5
一些假设。
路线:
$this->get('/favourite/{columnSorted?}/{sortOrder?}', 'Favourites@index')->name('favourite.list');
假定浏览器中的项目URL:
列排序:“ title” sortOrder:desc
http://yoursite.net/favourite/title/desc?page=3
现在,命名路由重定向到第3页。
正如您在上面的路线中看到的那样,columnSorted和sortOrder是动态的(路线中的参数后的?,例如:{sortOrder?})。
这意味着路由可以同时具有两个或全部。
如果您希望将它们传递给route中的param数组,则可以执行以下操作:
/*prep redirect to, where user was params*/ $routeParams = []; $q = '?'; if ($request->columnSorted) { $routeParams['columnSorted'] = $request->columnSorted; } if ($request->sortOrder) { $routeParams['sortOrder'] = $request->sortOrder; $q = ''; } if ($request->page) { $routeParams[] = $q . 'page=' . $request->page; } return redirect()->route('favourite.list', $routeParams);
请注意上面的“ $ q”参数。
最后一个(也是最后一个)路由参数$ q不能传递'?',否则从命名路由构造的路由将有双'??'看起来像:
http://yoursite.net/favourite/title/desc??page=3
...并且重定向将失败。
您可以从请求中获得的页码:
$request->get('page'); // or $request->page
...并将其传递给将进行重定向的方法。
答案 2 :(得分:0)
必须将查询字符串参数添加到路由。
unsafePerformIO