Vatrush
@Vatrush

Как сделать правильную пагинацию Laravel?

У меня есть шаблон в котором выводится вьюшка Ajax-ом
Ajax отправляет POST запрос с id компании вот сюда:
Route::post('/market/getCompany', ['as' => 'getCompany', 'uses' =>'MarketController@getCompany']);

Вот код MarketController:
public function getCompany(Request $request)
    {
        $company = Company::where('id', $request->id)->first();
        if(isset($company)){
            $articles = $this->getArticles();
            return view('layouts.market', compact('company','articles'));
        }
        return 'no results';
    }
     public function getArticles()
    {
        $articles = Articles::orderBy('price','desc')->simplePaginate(30);
        $articles->withPath('/market/articles');
        return $articles;
    }

Собственно проблема в том, что если я перехожу на следующую страницу пагинации, то у меня вылетает результат метода getCompany(); return 'no results'; т.к страница сбрасывает Ajax и обращается по адресу который предназначен для загрузки вьюхи, но если в web.php я прописываю это:
Route::get('/market/articles', ['as' => 'getArticles', 'uses' =>'MarketController@getArticles']);

то в таком случае у меня просто вылетает JSON ответ в браузере.
Посоветуйте как сделать это все качественно.
Менял ajax на get запросы, поведение не меняется.
  • Вопрос задан
  • 156 просмотров
Пригласить эксперта
Ответы на вопрос 1
Привет.
1) если у тебя резолвится пагинация по отдельному адресу / запросу, то передавай в методе явно указание страницы:
https://github.com/laravel/framework/blob/master/s...
Иначе он берет дефолт значение. На основной url тебе нужно отправлять всегда все данные и по странице текущей и по твоей компании id. Но учитывай, что при твоём дизайне ты будешь всегда получать view с разными данными. Соответственно, тебе будет нужно целиком html подменять. Я бы сделал иначе (смотри ниже)

2) по самому дизайну решение выглядит странновато. Я бы разделил получение view и получение данных. Тогда и коммент из 1 пункта станет не актуален наверно.

3) в бд есть запрос на проверку существования exists. Если ты эти данные нигде потом не используешь, то слишком жирный запрос делаешь впустую.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы