我的主页上有一个搜索栏,它看起来像这样:
<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中给了我一个错误,因为查询仍然没有设置。有没有一种不同的方式来做这件事?
发布于 2020-04-19 20:02:03
更改下面的表单操作方法,如下所示
<form action="{{url('')}}/all-{{$query}}-posts" ...>发布于 2020-04-19 20:05:49
已使用Post方法。
<form action="{{ route('search', $query) }}" method="POST" role="search">发布于 2020-04-19 20:25:06
如果你想在你的应用程序中开发一个搜索引擎,我会推荐以下几点。(最简单的方法之一)。学习POST,GET,PUT first。\然后,我的模型如下
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 ...
https://stackoverflow.com/questions/61303593
复制相似问题