如何将分页重定向到当前页面? - 拉拉维尔 5.5.



我已经设置了分页,它工作正常。但是我无法重定向到当前页面。

例如:如果我在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');

最新更新