From a9e8a934d9be52cb48c6b5575a301daa50c5244c Mon Sep 17 00:00:00 2001 From: Lloople Date: Sat, 27 May 2017 19:21:54 +0200 Subject: [PATCH] Add hasAny() method to Request --- .../Http/Concerns/InteractsWithInput.php | 19 +++++++++++++++++++ tests/Http/HttpRequestTest.php | 19 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/src/Illuminate/Http/Concerns/InteractsWithInput.php b/src/Illuminate/Http/Concerns/InteractsWithInput.php index 243a7796519d..d9ae90334237 100644 --- a/src/Illuminate/Http/Concerns/InteractsWithInput.php +++ b/src/Illuminate/Http/Concerns/InteractsWithInput.php @@ -91,6 +91,25 @@ public function has($key) return true; } + /** + * Determine if the request contains any of the given inputs. + * + * @param dynamic $key + * @return bool + */ + public function hasAny(...$keys) + { + $input = $this->all(); + + foreach ($keys as $key) { + if (Arr::has($input, $key)) { + return true; + } + } + + return false; + } + /** * Determine if the request contains a non-empty value for an input item. * diff --git a/tests/Http/HttpRequestTest.php b/tests/Http/HttpRequestTest.php index a8975e608aeb..4f1be4ef1f73 100644 --- a/tests/Http/HttpRequestTest.php +++ b/tests/Http/HttpRequestTest.php @@ -233,6 +233,25 @@ public function testHasMethod() $this->assertTrue($request->has('foo.baz')); } + public function testHasAnyMethod() + { + $request = Request::create('/', 'GET', ['name' => 'Taylor', 'age' => '', 'city' => null]); + $this->assertTrue($request->hasAny('name')); + $this->assertTrue($request->hasAny('age')); + $this->assertTrue($request->hasAny('city')); + $this->assertFalse($request->hasAny('foo')); + $this->assertTrue($request->hasAny('name', 'email')); + + $request = Request::create('/', 'GET', ['name' => 'Taylor', 'email' => 'foo']); + $this->assertTrue($request->hasAny('name', 'email')); + $this->assertFalse($request->hasAny('surname', 'password')); + + $request = Request::create('/', 'GET', ['foo' => ['bar' => null, 'baz' => '']]); + $this->assertTrue($request->hasAny('foo.bar')); + $this->assertTrue($request->hasAny('foo.baz')); + $this->assertFalse($request->hasAny('foo.bax')); + } + public function testFilledMethod() { $request = Request::create('/', 'GET', ['name' => 'Taylor', 'age' => '', 'city' => null]);