大家好,最近我在Laravel上开始了一个项目。7.x 但我有一些问题.
我用laravel默认的分页进行了搜索。
这是我的代码。
搜索表单
<form action="/search" method="GET">
<input type="text" name="k" id="k" value="" placeholder="Search...">
<button type="submit">Search</button>
</form>
控制器
public function get_search(Request $request)
{
$keyword = request('k');
$data = DB::table('posts')
->where('title', 'LIKE', '%$keyword%')
->orderBy('id', 'DESC')
->paginate(20);
return view('search', ['data' => $data]);
航线
Route::get('/search',['uses' => 'MainController@get_search', 'as' => 'search']);
查看
@foreach($data as $item)
{{ $item->title }}
@endforeach
{{ $data->links() }}
所以我得到的网址是 /search?key=keyword&page=2
我想做的就是让它看起来像 /search/keyword/page/2/
谢谢大家!
我建议你修改 路由网.php 文件。使用路径参数
Route::get('/search/{keyword}/page/{page}', 'SearchController@index')->name('.search');
然后,在控制器上。
public function index($keyword, $page){ //Receive parameters
$data = DB::table('posts')
->where('title', 'LIKE', '%$keyword%')
->orderBy('id', 'DESC')
->paginate(20);
return view('search', ['data' => $data]);
...
}
好吧,我做了什么,你上面说的,当获得 print_r($data)
在搜索刀片上,我得到这个
Array
(
[current_page] => 1
[data] => Array
(
[0] => stdClass Object
(
[title] => keyword 1
)
[1] => stdClass Object
(
[title] => keyword 2
)
[2] => stdClass Object
(
[title] => keyword 3
)
[3] => stdClass Object
(
[title] => keyword 4
)
[4] => stdClass Object
(
[title] => keyword 5
)
[5] => stdClass Object
(
[title] => keyword 6
)
[6] => stdClass Object
(
[title] => keyword 7
)
[7] => stdClass Object
(
[title] => keyword 8
)
[8] => stdClass Object
(
[title] => keyword 9
)
[9] => stdClass Object
(
[title] => keyword 10
)
)
[first_page_url] => hxxp://xxxx.xxx/search/keyword?page=1
[from] => 1
[last_page] => 5
[last_page_url] => hxxp://xxxx.xxx/search/keyword?page=5
[next_page_url] => hxxp://xxxx.xxx/search/keyword?page=2
[path] => hxxp://xxxx.xxx/search/keyword
[per_page] => 10
[prev_page_url] =>
[to] => 10
[total] => 49
)
显示相同的结果,而我替换的网址。hxxp://xxxx.xxx/search/keyword/page/2/
任何URL输出的结果都是一样的,只是改变了?page=x,但结果是一样的,基本上是用了 hxxp://xxxx.xxx/search/keyword/page/
2 没有任何作用。
hxxp://xxxx.xxx/search/keyword/page/2/
page=2 我不需要...替换 ->paginate(20)
由 ->paginate(20, ['*'], 'page', $page)
它没有记录在案。