首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel搜索功能

Laravel搜索功能
EN

Stack Overflow用户
提问于 2020-04-19 19:28:49
回答 3查看 29关注 0票数 0

我的主页上有一个搜索栏,它看起来像这样:

代码语言:javascript
复制
                <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>

我的路线看起来像这样:

代码语言:javascript
复制
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中给了我一个错误,因为查询仍然没有设置。有没有一种不同的方式来做这件事?

EN

回答 3

Stack Overflow用户

发布于 2020-04-19 20:02:03

更改下面的表单操作方法,如下所示

代码语言:javascript
复制
<form action="{{url('')}}/all-{{$query}}-posts" ...>
票数 0
EN

Stack Overflow用户

发布于 2020-04-19 20:05:49

已使用Post方法。

代码语言:javascript
复制
<form action="{{ route('search', $query) }}" method="POST" role="search">
票数 0
EN

Stack Overflow用户

发布于 2020-04-19 20:25:06

如果你想在你的应用程序中开发一个搜索引擎,我会推荐以下几点。(最简单的方法之一)。学习POST,GET,PUT first。\然后,我的模型如下

代码语言:javascript
复制
 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;
}

我在这里通过标题和位置进行搜索。即使只输入了关键字,它也可以输出。然后我的控制器就像这样:

代码语言:javascript
复制
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'));
}

在这里,我们可以搜索输入中的传入数据。所以我的视图刀片是这样的:

代码语言:javascript
复制
<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 ...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61303593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档