如何将搜索关键字传递给控制器​​?

时间:2017-04-26 09:35:05

标签: laravel search laravel-5.3

我正在学习laravel 5.4,我正在做一个示例项目。在那里我需要从我的数据库中搜索。下面我附上了我界面的截图。

enter image description here

正如你在搜索框中看到的,我已经给了我需要搜索“malabe”。我需要得到结果。我已经实现了Controller并且也需要视图。下面我已经附上了我的控制器

class SearchController extends Controller
{
    //search controller
    public function search($keydown){
        $searchDetails = DB::table('van_Services')
            ->where('vs_RouteTo','like','%'.$keydown.'%')
            ->orwhere('vs_RouteFrom','like','%'.$keydown.'%')
            ->orwhere('vs_Description','like','%'.$keydown.'%')
            ->orderBy('created_at', 'DESC')
            ->paginate(12);

        return view('search.search', compact('searchDetails'));
    }
}

路线代码

Route::get('/search/{key}','SearchController@search');

这是我的搜索框代码的div,

<div class="col-xs-6 col-sm-2 col-md-2">
    <div class="search_box pull-right">
           {{--Search Button--}}
           <input type="text" name="search" id="search" laceholder="Search"/>
    </div>
</div> 

如果我使用网址手册

,我的路线和代码是有效的

enter image description here

我的问题是如何让我的搜索框工作?任何教程或提示?

2 个答案:

答案 0 :(得分:1)

<强> 1。如果您确实需要使用网址链接。

JS解决方案是:

// q => Your search word
function redirectSearch(q) {
  location.href = '/search/'+q;
}

将搜索字段值传递给此函数并自动重定向页面。

<强> 2。您可以将GET参数发送给控制器。

正面代码:

<div class="col-xs-6 col-sm-2 col-md-2">
  <div class="search_box pull-right">
    <form action="/search" method="GET">
      {{--Search Button--}}
      <input type="text" name="search" id="search" placeholder="Search"/>
    </form>
</div>

控制器代码:

public function search(Request $request){
  $search = $request->search;
  ... Your code ...
}

如果您使用请求的方法不要忘记

use Illuminate\Http\Request;

路线:

Route::get('/search','SearchController@search');

答案 1 :(得分:1)

  

如果我使用网址手册

,我的路线和代码是有效的

我认为它已经在工作,重定向只是你的问题。 只需使用JS / jQuery。

// when ENTER is pressed
$(document).keypress(function (e) {
   if (e.which == 13) {
       e.preventDefault();

       window.location = APP_URL + "/search/" + $('#search').val();
   }
 });

古德勒克。