Laravel 5.1 带有问号的路由
Posted
技术标签:
【中文标题】Laravel 5.1 带有问号的路由【英文标题】:Laravel 5.1 Routes that have question mark 【发布时间】:2016-02-14 14:54:16 【问题描述】:我正在尝试在 Laravel 5.1 中创建一个基于“关键字”搜索记录的路由。我喜欢在我的网址中包含?
以提高可读性。问题是,当我包含?
并使用邮递员测试路线时,它什么也不返回。但是当我删除?
并用/
替换它并再次用邮递员测试它时,它将返回关键字的值。 Laravel 路由是否支持?
?
//Routes.php
Route::get('/search?keyword=keyword', [
'as' => 'getAllSearchPublications',
'uses' => 'PublicationController@index'
]);
//Publication Controller
public function index($keyword)
return $keyword;
我已经在互联网上搜索了几个小时,并且我已经阅读了 Laravel 文档,但我找不到答案。谢谢。
【问题讨论】:
我需要满足与发送参数的旧 API 调用的通信。例如。 /customer/?id=1 不知道该怎么做。你有没有让它工作? 【参考方案1】:我相信您在谈论查询字符串。要接受查询参数,不要将其作为参数传递。因此,例如,您的路线应该看起来更简单,如下所示:
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
类。
【讨论】:
那么这个“as”是什么?它的用途是什么?这个“getAllSearchPublication”是什么?这个“关键词”是什么?我有一个 domain.com/something/?myquerystring 我需要得到那个 myquerystring。这是使用带问号的 domain/oembed/?something 的 oembed 约定【参考方案2】:使用
$resquest
控制器操作中的参数以获取查询参数。而不是使用"?"
在您的路线中创建。
【讨论】:
感谢您的回复。不过,Thomas Kim 的回答更详细。以上是关于Laravel 5.1 带有问号的路由的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.1 UrlGenerator 路由未定义错误