【发布时间】:2020-09-19 07:31:19
【问题描述】:
我目前正在做一个项目,其中一页显示数据库中当前的所有项目,我使用 laravel 的分页。这工作得很好。但该页面还具有搜索特定项目的搜索功能。这就是我遇到问题的地方。
目前,搜索后第一页显示正常,但是当我按下按钮转到任何其他页面时,我总是得到第一页(页面刷新但 url 没有改变,我得到第 1 页)。如果我手动将 url 更改为链接上的 href 它可以工作,但按下按钮不会更改 url。页码未附加。
这是我的控制器
public function searchItems(Request $request)
{
if (!Auth::check() || !Auth::user()->is_admin()) return redirect('/login');
$request->validate([
'admin-query' => 'required|min:3',
]);
$query = $request->input('admin-query');
$items_aux = DB::select("SELECT id, ts_rank_cd(textsearch, query) AS rank FROM \"item\", to_tsquery('english','.$query')
AS query, to_tsvector(name || ' ' || description) AS textsearch WHERE query @@ textsearch ORDER BY rank DESC");
$ids = array();
for ($i = 0; $i < sizeof($items_aux); $i++) {
$ids[$i] = $items_aux[$i]->id;
}
$categories = Category::orderBy('id', 'DESC')->get();
$items = Item::whereIn('id', $ids)->orderBy('id', 'DESC')->paginate(10);
$pagination = $items->appends(array(
'adim-query' => Input::get('admin-query')
));
foreach ($items as $item) {
$img_url = Product_Image::where('id_item', '=', $item->id)->first()['url'];
if (Storage::disk('public')->exists($img_url)) {
$item->img = Storage::url($img_url);
} else {
$item->img = null;
}
}
return view('pages.adminproducts', ['items' => $items, 'categories'=>$categories]);
}
我的路线:
Route::get('admin-items/search', 'AdminItemsController@searchItems');
我的表格:
<div class="form col-sm-8 col-md-8 col-lg-4 text-center pt-0">
<!--form-->
<form action="/admin-items/search" method="GET" class="header-search-form" role="search">
<input type="text" name="admin-query" id="admin-query" value="{{ request()->input('admin-query') }}" class="search-box"
placeholder="Search Products">
<button><i class="fa fa-search" aria-hidden="true"></i>
</button>
</form>
</div>
我的项目和链接:
<div class="row">
<div class="management-products container-fluid card-deck justify-content-center">
@foreach($items as $item)
@include('partials.admin_product', $item)
@endforeach
</div>
</div>
<div class="row justify-content-center">
<div class="pagination-links">
{{ $items->links() }}
</div>
</div>
</div>
检查加载页面上的链接
<li class="page-item disabled" aria-disabled="true" aria-label="« Previous">
<span class="page-link" aria-hidden="true">‹</span>
</li>
<li class="page-item active" aria-current="page"><span class="page-link">1</span></li>
<li class="page-item"><a class="page-link" href="http://localhost:8000/admin-items/search?adim-query=volutpat&page=2">2</a></li>
<li class="page-item"><a class="page-link" href="http://localhost:8000/admin-items/search?adim-query=volutpat&page=3">3</a></li>
<li class="page-item"><a class="page-link" href="http://localhost:8000/admin-items/search?adim-query=volutpat&page=4">4</a></li>
<li class="page-item"><a class="page-link" href="http://localhost:8000/admin-items/search?adim-query=volutpat&page=5">5</a></li>
<li class="page-item"><a class="page-link" href="http://localhost:8000/admin-items/search?adim-query=volutpat&page=6">6</a></li>
<li class="page-item"><a class="page-link" href="http://localhost:8000/admin-items/search?adim-query=volutpat&page=2" rel="next" aria-label="Next »">›</a></li>
【问题讨论】: