我已经设置了分页,它工作正常。但是我无法重定向到当前页面。
例如:如果我在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)
祝你好运。
如果有人必须重定向到当前或任何页面并使用命名路由。
测试:拉拉维尔5
一些假设。
路线:
$this->get('/favorite/{columnSorted?}/{sortOrder?}', 'Favourites@index'(->name('favorite.list'(;
浏览器中假定的项目 URL:
列排序:"标题" 排序顺序: 描述
http://yoursite.net/favourite/title/desc?page=3
现在,命名路由重定向到第 3 页。
正如你在上面的路由中看到的,columnSort和sortOrder是动态的(在route中的参数之后,例如:{sortOrder?}(。
这意味着,该路线可以同时具有两者,只有一个或没有。
如果您希望将它们传递给路由中的参数数组,您可以执行以下操作:
/*prep 重定向到,其中用户是参数*/$routeParams = []; $q = '?'; if ($request->列排序( { $routeParams['列排序'] = $request->列排序; } if ($request->sortOrder( { $routeParams['排序顺序'] = $request->排序顺序; $q = ''; } 如果($request->页( { $routeParams[] = $q ."页面=" .$request页>页; } 返回 redirect((->route('favorite.list', $routeParams(;
请注意上面的"$q"参数。
最后一个(也是最后一个(路由参数$q不得传递"?",或者从命名路由构造的路由将具有双"??",如下所示:
http://yoursite.net/favourite/title/desc??page=3
...并且重定向将失败。
您可以从请求中获得的页码:
$request->get('page'(; 或 $request->页
...并将其传递给将执行重定向的方法。
必须向路由添加查询字符串参数。
return redirect()
->route('currencies.index', ['page' => $request->get('page', 1)])
->with('message', 'Done');