我的首页上有一个搜索栏,如下所示:
<form action="{{ route('search', $query) }}" method="GET" role="search">
<div class="input-group mb-4 search_bar">
<input type="search" name="search" placeholder="Search..." aria-describedby="button-addon5" class="form-control search_input">
<div class="input-group-append">
<button id="button-addon5" type="submit" class="btn btn-primary"><i class="fa fa-search"></i></button>
</div>
</div>
</form>
我的路线如下:
Route::get('all-{query}-posts', 'SearchController@index')->where('query', '[A-Za-z0-9-]+')->name('search');
因此,基本上,我希望在URL中输入搜索栏是这样的:/ all-stuff-posts而不是通常的:?search = stuff 即使我没有在任何地方添加?search = stuff,它似乎也会自动添加到末尾,这是第一个问题。
第二个问题是我只能在控制器中检索查询,但是由于仍未设置查询,因此web.php中出现错误。有其他可行的方法吗?
答案 0 :(得分:0)
在下面更改您的表单操作方法
<form action="{{url('')}}/all-{{$query}}-posts" ...>
答案 1 :(得分:0)
使用过帐方法。
<form action="{{ route('search', $query) }}" method="POST" role="search">
答案 2 :(得分:0)
如果您想在您的应用中开发搜索引擎,我将建议以下内容。 (最简单的方法之一)。 首先了解POST,GET和PUT。\ 然后,我的模特是这样的
public function scopeSearchByKeyword($query, $keyword,$location)
{
if ($keyword!='' and $location!='') {
$query->where(function ($query) use ($keyword,$location) {
$query->where("title", "LIKE","%$keyword%")
->where("location_id", "$location")
->where("status", "1");
});
}
else
{
$query->where(function ($query) use ($keyword) {
$query->where("title", "LIKE","%$keyword%")
->where("status", "1");
});
}
return $query;
}
我在这里按标题和位置进行搜索。即使仅输入关键字也可以输出。 然后我的控制器是这样的:
public function search_kasblar(Request $request)
{
$inputs = $request->all();
$keyword = $inputs['search_keyword'];
$location = $inputs['location'];
$jobs= JobBoards::SearchByKeyword($keyword,$location)->get();
$total_res=count($jobs);
return view('jobs.search',compact('jobs','total_res','keyword'));
}
在这里我们可以在输入中搜索传入的数据。 所以我的视图刀片是这样的:
<div class="finderform">
{!! Form::open(array('url' => 'listings/search','class'=>'','id'=>'search','role'=>'form')) !!}
<div class="col-md-5 col-sm-5 no-padding"> <i class="fa fa-search local-search-ic"></i>
<input type="text" class="form-control" name="search_keyword" id="input-search-term" title="Search for..." placeholder="Search anything here" value="" autocomplete="off">
</div>
<div class="form-group col-md-5 col-sm-5 no-padding"> <i class="fa fa-map-marker local-search-ic ic-map-location"></i>
<div class="">
<select id="location" name="location" class="form-control">
<option value="">Select Location</option>
@foreach(\App\Location::orderBy('location_name')->get() as $location)
<option value="{{$location->id}}">{{$location->location_name}}</option>
@endforeach
</select>
</div>
</div>
<button type="submit" class="btn tp-btn-default tp-btn-lg">Search</button>
{!! Form::close() !!}
您可以像这样使用。 并在路由器中使用POST ...