Как перенаправить страницу на текущую страницу? - Laravel 5.5 - PullRequest
0 голосов
/ 06 июля 2018

Я настроил нумерацию страниц, и она работает правильно. Но я не могу перенаправить на текущую страницу.

Eg: если я вызываю метод обновления на 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 голосов
/ 06 июля 2018

Вы должны добавить параметр строки запроса к маршруту.

return redirect()
    ->route('currencies.index', ['page' => $request->get('page', 1)])
    ->with('message', 'Done');
0 голосов
/ 26 октября 2018

В случае, если кто-то должен сделать перенаправление на текущую или любую страницу и работает с именованными маршрутами .

Проверено: Laravel 5

Некоторые предположения с пути.

маршрут:

$this->get('/favourite/{columnSorted?}/{sortOrder?}', 'Favourites@index')->name('favourite.list');

предполагаемый URL проекта в браузере:

columnSorted: 'title' sortOrder: desc

http://yoursite.net/favourite/title/desc?page=3

Теперь именованный маршрут перенаправляется на страницу 3.

Как вы можете видеть на маршруте выше, columnSorted и sortOrder являются динамическими (? После параметра в маршруте, например: {sortOrder?}).

Что означает, что этот маршрут может иметь оба, только один или ни одного из них.

Если вы хотите передать их в массив параметров в маршруте, вы можете сделать что-то вроде этого:

/*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

... и передать его методу, который будет выполнять перенаправление.

0 голосов
/ 06 июля 2018

Ознакомьтесь с документацией здесь 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)

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...