【问题标题】:Laravel 5.1 Routes that have question markLaravel 5.1 带有问号的路由
【发布时间】: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 不知道该怎么做。你有没有让它工作?

标签: php laravel routes laravel-5.1 laravel-routing


【解决方案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 的回答更详细。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2015-10-12
  • 2013-09-05
  • 2016-04-13
  • 2015-11-07
相关资源
最近更新 更多