如何在Laravel中获取包含特殊字符的路线

时间:2018-08-07 14:40:57

标签: php laravel

我想使用get方法提交表单,然后从URL获取参数并对其进行处理。但我不知道如何生成我的路线。它一直显示错误Sorry, the page you are looking for could not be found. 因此网址应如下所示:search/?q=something。我想从URL获取something,并使用它进行数据库查询。

web.php:

Route::get('/search/?q={query}', 'MoviesController@search');

MoviesController.php

 public function search($query)
    {
        $this->validate($query, [
            'search' => 'required'
        ]);
        $search = Movie::where('name', 'like', '%' . $query. '%')->get();

        return view('inc.search')->with('search', $search);
    }

HTML

<form action="/search" method="GET">
    {{-- @csrf --}}
    <input type="text" name="q" placeholder="search">
    <input type="submit">
</form>

我不知道我的HTML部分是否正确!

1 个答案:

答案 0 :(得分:1)

?q={query}您不需要在Route定义中使用它,因为我很确定这是定义Route参数的无效方法。替换

public function search($query){
  $this->validate($query, [
    'search' => 'required'
  ]);

使用

public function search(Request $request){
  $this->validate($request->all(), [
    'q' => 'required'
  ]);

  $search = Movie::where('name', 'like', '%' . $request->input("q"). '%')->get();

并确保use Illuminate\Http\Request;顶部有MoviesController