我正在处理一个 Laravel 项目,我从 API 获取数据,然后我想在页面上显示它。我希望返回分布在 4 页上,每页有 10 个结果。到目前为止,我所拥有的似乎应该可以工作,但是我缺少一件,因此将不胜感激任何建议和帮助。所以这就是它应该如何处理代码:1) 用户在搜索框中输入书名。<form method=POST action='/search'> @csrf <input type="text" name="search_term"/> <input type="submit" value="Search"/> </form>2)然后将输入发送到我的控制器,该控制器查询谷歌图书 API。class search extends Controller {public function search(){ $current_page = LengthAwarePaginator::resolveCurrentPage(); echo $current_page; $term = request('search_term'); $term = str_replace(' ', '_', $term); $client = new \Google_Client(); $service = new \Google_Service_Books($client); $params = array('maxResults'=>40); $results = $service->volumes->listVolumes($term,$params); $book_collection = collect($results); $current_book_page = $book_collection->slice(($current_page-1)*10,10)->all(); $books_to_show = new LengthAwarePaginator($current_book_page,count($book_collection),10,$current_page); return view('library.search')->with(compact('books_to_show')); }}3)结果然后显示在我的刀片上@extends('home')@section('content')@foreach($books_to_show as $entries)<div class="row"> <div class="col-sm-auto"> <img class="w-50 img-thumbnail" src={{$entries['volumeInfo']['imageLinks']['smallThumbnail']}}/> </div> <div class="col-sm"> {{$entries['volumeInfo']['title']}}<br/> @if($entries['volumeInfo']['authors']!=null) by: @foreach($entries['volumeInfo']['authors'] as $authors) {{$authors}} @endforeach @endif </div></div>@endforeach{{$books_to_show->links()}}@endsection这一切正常,并符合预期。我在视图上得到 10 个结果,然后我在底部有一个栏,它显示了 4 个不同的页面可供选择。当我第一次输入诸如“威廉莎士比亚”之类的搜索词时,我的页面网址是: localhost:8000/search但是,当我点击任何页面时,我的网址变为: http://localhost:8000/?page=2我知道?page=*是分页如何确定您正在查看的页面,并且应该将其发送回控制器。但是,我认为将其发送回控制器时遗漏了一些东西。对此仍然有点新鲜,因此非常感谢任何建议。
1 回答
互换的青春
TA贡献1797条经验 获得超6个赞
LengthAwarePaginator 在其构造函数中接受第 5 个参数:选项数组。
该path选项
$books_to_show = new LengthAwarePaginator($current_book_page, count($book_collection), 10, $current_page, [
// This will fix the path of the pagination links
'path' => LengthAwarePaginator::resolveCurrentPath()
]);
顺便说一句,在一个完全不同的问题上,Laravel 通过为您切片集合让您的生活更轻松,请查看:
$current_book_page = $book_collection->forPage($current_page, 10);
希望能帮助到你 :)
- 1 回答
- 0 关注
- 153 浏览
添加回答
举报
0/150
提交
取消