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

问题描述 投票:0回答:4

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

例如:如果我在

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() }}

php laravel laravel-5 eloquent
4个回答
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
投票

如果有人必须重定向到当前页面或任何页面并使用命名路由

测试: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('页面');

// 或者 

$请求->页面

...并将其传递给将进行重定向的方法。


0
投票

您必须向路线添加查询字符串参数。

return redirect()
    ->route('currencies.index', ['page' => $request->get('page', 1)])
    ->with('message', 'Done');

0
投票
$results->url($result->currentPage())

为您提供当前页面的网址

© www.soinside.com 2019 - 2024. All rights reserved.