Laravel 5.1 有问号的路线

Laravel 5.1 Routes that have question mark

我正在尝试在 Laravel 5.1 中创建一条路线,它将根据 "keyword" 搜索记录。我喜欢在我的 url 中包含一个 ? 以提高可读性。问题是,当我包括 ? 并用邮递员测试路线时,它 return 什么都没有。但是当我删除 ? 并将其替换为 / 并再次使用邮递员对其进行测试时,它将 return 关键字的值。 Laravel路由是否支持?

//Routes.php
Route::get('/search?keyword={keyword}', [
    'as' => 'getAllSearchPublications', 
    'uses' => 'PublicationController@index'
]);

//Publication Controller
public function index($keyword)
{
    return $keyword;
}

我已经在互联网上搜索了几个小时,并且阅读了 Laravel 文档,但我找不到答案。谢谢。

我相信您在谈论查询字符串。要接受查询参数,您不要将其作为参数传递。因此,例如,您的路线应该看起来更简单:

Route::get('/search', [
    'as' => 'getAllSearchPublications', 
    'uses' => 'PublicationController@index'
]);

注意:我删除了 ?keyword={keyword}

然后,在您的控制器方法中,您可以通过调用 Request 对象上的 query 方法来获取查询参数。

public function index(Request $request)
{
    return $request->query('keyword');
}

如果您还没有导入,则需要导入 use Illuminate\Http\Request; 才能使用 Request class。

使用

$resquest

控制器操作中的参数以获取查询参数。而不是使用 "?" 在您的路线中创建。