将输入查询添加到搜索功能Laravel Scout的路由值

时间:2017-07-07 18:27:55

标签: php mysql laravel search laravel-scout

尝试为产品设置基本搜索功能。我无法对路由参数变量进行排序并将查询字符串传递给搜索功能。

Route::get('/search/{query?}', 'ProductController@searchable');

这可以在我手动输入查询时返回查询。

控制器

public function searchable($query)
{
    // search database, with result, list on page, with links to products,
    $products = Product::search($query)->get();

    return view('search.index', compact('products'));
}

但是,我希望它来自网址/search?test

我的表单显示:

{{ Form::open(array('action' => 'ProductController@searchable', 'method' => 'get', 'files' => 'false')) }}
<input type="search" name="search" placeholder="type keyword(s) here" />
<button type="submit" class="btn btn-primary">Search</button>
{{ Form::close() }}`

我是Laravel的新手,需要一些帮助。我正在使用Laravel Scout和TNTSearch。

1 个答案:

答案 0 :(得分:1)

您无需使用{wildcard}进行搜索。我们Request

Route::get('search', 'ProductController@searchable');

改为传递网址。

{{ Form::open(array('url' => 'search', 'method' => 'GET', 'files' => 'false')) }}
    <input type="search" name="search" placeholder="type keyword(s) here" />
    <button type="submit" class="btn btn-primary">Search</button>
{{ Form::close() }}

在Controller简单提取$request->search

public function searchable(Request $request)
{
    // search database, with result, list on page, with links to products,
    $products = Product::search($request->search)->get();

    return view('search.index', compact('products'));
}