HTML文件(使用Laravel的刀片):
<div class="navbar-collapse collapse" id="bs-example-navbar-collapse-1">
<div class="input-group" id="search-form">
<span class="input-group-text" id="basic-addon1">Search:</span>
<input type="text" name="search" size="1" id="search-bar" class="form-control" aria-label="Username" aria-describedby="basic-addon1">
@if ( !empty($search) )
<ul>
@foreach ($search_query as $item)
<li><a href="{{ url('shop/' . $item->url . '/' . $item->purl) }}">{{ $item->ptitle }}</a></li>
@endforeach
</ul>
@endif
<button class="btn input-group-text" id="submit-btn">Go!</button>
</div>
控制器内部的方法:
public function search(Request $request){
Product::autoComplete($request, self::$data);
return self::$data;
}
我遇到的问题是我无法进入@if (!empty($search))
,尽管有一个变量$search
包含来自Ajax调用的信息(如所附的屏幕截图所示)
最终目标是在搜索输入下方的div
(类似于YouTube上的搜索栏)中向用户显示与他/她的搜索相匹配的所有字词。
这是其余的代码,尽管可以正常工作,如dd(self::$data)
的屏幕截图所示:
型号:
static public function autoComplete($request, &$data){
if ( !empty( $request['search'] ) && is_string($request['search'])) {
$search = trim(filter_var($request['search'], FILTER_SANITIZE_STRING));
$search = strtoupper($search);
if ($search) {
$data['search'] = DB::table('products AS p')
->join('categories AS c', 'c.id', '=', 'p.categorie_id')
->select('ptitle', 'article', 'c.url', 'p.purl')
->where('ptitle', 'LIKE', '%' . $search . '%')
->orWhere('article', 'LIKE', '%' .$search . '%')
->get();
}
}
}
网络路由器:
Route::get('search', 'PageController@search');