问题:
当我在posts
中搜索时,我会从posts
和products
获得结果,但当我在products
中搜索时,我只会从products
获得结果(这是正确的)
我的控制员:
public function search(Request $request) {
$search = request('search');
$searchType = request('searchType');
if(strcmp($searchType, "posts") == 0){
$posts = Post::where('title', 'like', "%{$search}%")
->orWhere('description', 'like', "%{$search}%")
->get();
}else{
$products = Product::where('title', 'like', "%{$search}%")
->orWhere('description', 'like', "%{$search}%")
->get();
}
return view('front.search', compact('posts', 'products'));
}
我的刀片(表格)
<form class="search" action="/search" method="GET" role="search">
<input type="text" name="search" class="awesomplete search_box" list="mylist" placeholder="Enter your keyword ...">
<datalist id="mylist">
@foreach($products as $product)
<option>{{$product->title}}</option>
@endforeach
</datalist>
<div class="collections-selector">
<select class="single-option-selector" data-option="collection-option" id="collection-option" name="searchType">
<option value="products">Products</option>
<option value="posts">Posts</option>
</select>
</div>
<button class="search_submit" type="submit">
<svg aria-hidden="true" role="presentation" class="icon icon-search" viewBox="0 0 37 40"><path d="M35.6 36l-9.8-9.8c4.1-5.4 3.6-13.2-1.3-18.1-5.4-5.4-14.2-5.4-19.7 0-5.4 5.4-5.4 14.2 0 19.7 2.6 2.6 6.1 4.1 9.8 4.1 3 0 5.9-1 8.3-2.8l9.8 9.8c.4.4.9.6 1.4.6s1-.2 1.4-.6c.9-.9.9-2.1.1-2.9zm-20.9-8.2c-2.6 0-5.1-1-7-2.9-3.9-3.9-3.9-10.1 0-14C9.6 9 12.2 8 14.7 8s5.1 1 7 2.9c3.9 3.9 3.9 10.1 0 14-1.9 1.9-4.4 2.9-7 2.9z"></path></svg>
</button>
</form>
我的路线:
Route::any('/search', 'frontend\SearchController@search')->name('search');
我的搜索结果页面:
@if(isset($posts))
@forelse($posts as $post)
{{$post->title}} <br>
@empty
no post!
@endforelse
@endif
@if(isset($products))
@forelse($products as $product)
{{$product->title}} <br>
@empty
no product!
@endforelse
@endif
PS:此截图是在帖子搜索中拍摄的。
dd($posts);
dd($products);
在dd
中,一切似乎都很好,但实际上他们都聚在一起。有什么想法吗?
答案 0 :(得分:2)
在讨论时,您在标题搜索表单中设置了var onKeyPressFunction = (_: any, event: any): void => {
...
}
变量,并在检查是否设置了noUnusedParameters
时污染了您的搜索结果页,并且确实如此设置,以便打印出来(即,您的搜索结果是从标题共享表单中的变量打印产品)。
只需在共享刀片模板中为表单使用其他变量名称,例如,使用更具体的$products
,而不是使用$products
。