如何将分页重定向到当前页面? -Laravel 5.5

时间:2018-07-06 00:59:05

标签: php laravel laravel-5 eloquent

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

例如:如果我在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() }}

3 个答案:

答案 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