如何正确地为搜索查询字符串写路由


Laravel5 - how to correctly write route for search query string?

我正在一个应用程序上工作,在那里我应该在包含用户的表上执行搜索。然而,我不知道如何正确地组成路由,以便将视图与控制器连接起来。我的代码如下:观点:

<form action='{{url(' users')}}' method='GET'>
<input class='form-control' type="text" name="keyword" placeholder="Search for user...">
</form>

的路线:

Route::get('users?keyword={$keyword}', 'UsersController@search');

UsersController中的search():

public function search()
{
    $keyword = Request::get('keyword');
    $users = User::where("username", "LIKE","%$keyword%")
            ->orWhere("firstname", "LIKE", "%$keyword%")
            ->orWhere("lastname", "LIKE", "%$keyword%")
            ->orWhere("email", "LIKE", "%$keyword%")
            ->orWhere("phone", "LIKE", "%$keyword%")->get();
    return view('search', compact('users'));
}

谁能告诉我正确的语法是什么?提前感谢!

你的路由应该是:

 Route::get('users', 'UsersController@search');

在您的控制器中,您可以通过使用请求对象的get函数来获取查询参数,您已经这样做了。

您可以通过以下任意函数获取参数:

request()->get('keyword');
request()->input('keyword');
request()->query('keyword');

在文件顶部添加以下导入:

use Illuminate'Http'Request;

然后在你的控制器函数中注入:

public function search(Request $request)
{
    $keyword = $request->input('keyword');
    // or
    $keyword = $request->query('keyword');
    // rest of the code
}

试试这个:

  Route::get('users', 'UsersController@search');
控制器

public function search(Request $request) {
    $keyword = $request->get('keyword');
    $users = User::where("username", "LIKE","%$keyword%")
            ->orWhere("firstname", "LIKE", "%$keyword%")
            ->orWhere("lastname", "LIKE", "%$keyword%")
            ->orWhere("email", "LIKE", "%$keyword%")
            ->orWhere("phone", "LIKE", "%$keyword%")->get();
    return view('search', compact('users'));
}