From 33bd4f88ddf5839e025792a608855e6ffd00519e Mon Sep 17 00:00:00 2001 From: Daniel Esteve Date: Fri, 10 Jun 2022 18:08:47 +0200 Subject: [PATCH 1/3] fix Request offsetExists without routeResolver --- src/Illuminate/Http/Request.php | 4 +++- tests/Http/HttpRequestTest.php | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/Illuminate/Http/Request.php b/src/Illuminate/Http/Request.php index 06bc955633fb..9bebfa4b1f9e 100644 --- a/src/Illuminate/Http/Request.php +++ b/src/Illuminate/Http/Request.php @@ -670,7 +670,9 @@ public function toArray() public function offsetExists($offset) { return Arr::has( - $this->all() + $this->route()->parameters(), + $this->all() + with($this->route(), function ($route) { + return $route ? $route->parameters() : []; + }), $offset ); } diff --git a/tests/Http/HttpRequestTest.php b/tests/Http/HttpRequestTest.php index 6fb0c9b54d36..081b8a35cff5 100644 --- a/tests/Http/HttpRequestTest.php +++ b/tests/Http/HttpRequestTest.php @@ -613,6 +613,22 @@ public function testArrayAccess() $this->assertSame('foo', $request['id']); } + public function testArrayAccessWithoutRouteResolver() + { + $request = Request::create('/', 'GET', ['name' => 'Taylor', 'foo' => ['bar' => null, 'baz' => '']]); + + $this->assertFalse(isset($request['non-existent'])); + $this->assertNull($request['non-existent']); + + $this->assertTrue(isset($request['name'])); + $this->assertSame('Taylor', $request['name']); + + $this->assertTrue(isset($request['foo.bar'])); + $this->assertNull($request['foo.bar']); + $this->assertTrue(isset($request['foo.baz'])); + $this->assertSame('', $request['foo.baz']); + } + public function testAllMethod() { $request = Request::create('/', 'GET', ['name' => 'Taylor', 'age' => null]); From 3c26c30e1f470e13cd91b78c735ac0531a9eb6d2 Mon Sep 17 00:00:00 2001 From: Daniel Esteve Date: Fri, 10 Jun 2022 18:56:05 +0200 Subject: [PATCH 2/3] simplify test --- tests/Http/HttpRequestTest.php | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/tests/Http/HttpRequestTest.php b/tests/Http/HttpRequestTest.php index 081b8a35cff5..e401ce960cd0 100644 --- a/tests/Http/HttpRequestTest.php +++ b/tests/Http/HttpRequestTest.php @@ -615,18 +615,13 @@ public function testArrayAccess() public function testArrayAccessWithoutRouteResolver() { - $request = Request::create('/', 'GET', ['name' => 'Taylor', 'foo' => ['bar' => null, 'baz' => '']]); + $request = Request::create('/', 'GET', ['name' => 'Taylor']); $this->assertFalse(isset($request['non-existent'])); $this->assertNull($request['non-existent']); $this->assertTrue(isset($request['name'])); $this->assertSame('Taylor', $request['name']); - - $this->assertTrue(isset($request['foo.bar'])); - $this->assertNull($request['foo.bar']); - $this->assertTrue(isset($request['foo.baz'])); - $this->assertSame('', $request['foo.baz']); } public function testAllMethod() From 9364ec14320edd53ea3b332de1190558910669ed Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Fri, 10 Jun 2022 13:47:20 -0500 Subject: [PATCH 3/3] formatting --- src/Illuminate/Http/Request.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Illuminate/Http/Request.php b/src/Illuminate/Http/Request.php index 9bebfa4b1f9e..79175ac4476e 100644 --- a/src/Illuminate/Http/Request.php +++ b/src/Illuminate/Http/Request.php @@ -669,10 +669,10 @@ public function toArray() #[\ReturnTypeWillChange] public function offsetExists($offset) { + $route = $this->route(); + return Arr::has( - $this->all() + with($this->route(), function ($route) { - return $route ? $route->parameters() : []; - }), + $this->all() + ($route ? $route->parameters() : []), $offset ); }