【问题标题】:Laravel 6.2 Requests - Returns Null on specific routeLaravel 6.2 请求 - 在特定路由上返回 Null
【发布时间】:2020-10-15 08:35:25
【问题描述】:

在 Laravel 6.2 - 稳定版本上运行

我不完全确定我在哪里出错 - 它适用于一种方法,但不适用于另一种方法。唯一的区别是 URL 格式。

(只是试图从发布请求中获取正文信息)

例如,我在控制器中有以下方法。

/** METHOD IS POST - URL FORMAT: SERVER.COM/$number **/
private function populate(Request $request, $number){
 //
 $request->get('x'); // Works
}

但是当这样做时:

  /* POST METHOD - URL FORMAT: server.com/$number/example/$position
private function unpopulate(Request $request, $number, $position){
     $request->get('x'); // Fails
}

填充邮递员DD

Illuminate\Http\Request {#54
  #json: Symfony\Component\HttpFoundation\ParameterBag {#46
    #parameters: array:1 [
      "x" => "2005-08-15T15:52:01+00:00"
    ]
  }

取消填充邮递员DD

Illuminate\Http\Request {#54
  #json: null
  #convertedFiles: null
  #userResolver: Closure($guard = null) {#34

如果我在 unpopulate 中对 $request 进行 json_decode,那么它会返回:

  -_jsonRequest: {#287
    +"finished_at": "2005-08-15T15:52:01+00:00"

但是当我试图访问它时,我得到一个空值。

$test = json_decode ( $request->getContent() ); // Decodes 
$test->x // Fails
isset($test->x) // Fails

关于如何解决这个问题以及为什么会发生这种情况的任何想法?

【问题讨论】:

    标签: laravel laravel-6


    【解决方案1】:

    Laravel 对传入表单数据的get() 方法与 Symfony 略有不同。

    当数据来自表单时,使用$request->input('x'); 以避免冲突。

    这会有所帮助 - 但您的问题可能与传入的数据有关。如果您在 unpop 方法中 dd($request->all()) 并获得 null,则问题是您在表单推送的问题中未显示的问题。

    【讨论】:

      猜你喜欢
      • 2018-08-05
      • 2019-07-26
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      • 2018-03-29
      • 2017-11-06
      • 2020-03-24
      • 1970-01-01
      相关资源
      最近更新 更多