Laravel функциональность поиска - PullRequest
0 голосов
/ 19 апреля 2020

На моей домашней странице есть панель поиска, которая выглядит следующим образом:

                <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 вместо обычного: 1007 *

Вторая проблема заключается в том, что я могу получить запрос только в контроллере, но это дает мне ошибку в сети. php, потому что запрос все еще не установлен. Есть ли другой способ сделать это, который работает?

Ответы [ 3 ]

0 голосов
/ 19 апреля 2020

Используется метод Post.

<form action="{{ route('search', $query) }}" method="POST" role="search">
0 голосов
/ 19 апреля 2020

Если вы хотите разработать поисковую систему в своем приложении, я предложу следующее. (Один из самых простых способов). Сначала узнайте о 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 в вашем роутере ...

0 голосов
/ 19 апреля 2020

Измените свой метод действия формы ниже как это

<form action="{{url('')}}/all-{{$query}}-posts" ...>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...