From e4d7fbf0cb9d8dd4cad9070d6fc08f90a3b7bd13 Mon Sep 17 00:00:00 2001 From: Lucas <7912315+elbojoloco@users.noreply.github.com> Date: Wed, 14 May 2025 14:31:46 +0200 Subject: [PATCH 1/2] Add a default option when retrieving an enum from data --- src/Illuminate/Support/Traits/InteractsWithData.php | 7 ++++--- tests/Http/HttpRequestTest.php | 3 +++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Illuminate/Support/Traits/InteractsWithData.php b/src/Illuminate/Support/Traits/InteractsWithData.php index bd39205d942d..2cbb46c93e10 100644 --- a/src/Illuminate/Support/Traits/InteractsWithData.php +++ b/src/Illuminate/Support/Traits/InteractsWithData.php @@ -312,15 +312,16 @@ public function date($key, $format = null, $tz = null) * * @param string $key * @param class-string $enumClass + * @param TEnum|null $default * @return TEnum|null */ - public function enum($key, $enumClass) + public function enum($key, $enumClass, $default = null) { if ($this->isNotFilled($key) || ! $this->isBackedEnum($enumClass)) { - return null; + return $default; } - return $enumClass::tryFrom($this->data($key)); + return $enumClass::tryFrom($this->data($key)) ?: $default; } /** diff --git a/tests/Http/HttpRequestTest.php b/tests/Http/HttpRequestTest.php index 249b3043691e..08ab80bc6d80 100644 --- a/tests/Http/HttpRequestTest.php +++ b/tests/Http/HttpRequestTest.php @@ -804,6 +804,9 @@ public function testEnumMethod() $this->assertNull($request->enum('doesnt_exist', TestEnumBacked::class)); + $this->assertEquals(TestEnumBacked::test, $request->enum('invalid_enum_value', TestEnumBacked::class, TestEnumBacked::test)); + $this->assertEquals(TestEnumBacked::test, $request->enum('missing_key', TestEnumBacked::class, TestEnumBacked::test)); + $this->assertEquals(TestEnumBacked::test, $request->enum('valid_enum_value', TestEnumBacked::class)); $this->assertNull($request->enum('invalid_enum_value', TestEnumBacked::class)); From 7b0db5d97a217230c86f3527b472d5ccbab368e0 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Wed, 14 May 2025 09:04:18 -0500 Subject: [PATCH 2/2] Update InteractsWithData.php --- src/Illuminate/Support/Traits/InteractsWithData.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Illuminate/Support/Traits/InteractsWithData.php b/src/Illuminate/Support/Traits/InteractsWithData.php index 2cbb46c93e10..5647570eb577 100644 --- a/src/Illuminate/Support/Traits/InteractsWithData.php +++ b/src/Illuminate/Support/Traits/InteractsWithData.php @@ -318,10 +318,10 @@ public function date($key, $format = null, $tz = null) public function enum($key, $enumClass, $default = null) { if ($this->isNotFilled($key) || ! $this->isBackedEnum($enumClass)) { - return $default; + return value($default); } - return $enumClass::tryFrom($this->data($key)) ?: $default; + return $enumClass::tryFrom($this->data($key)) ?: value($default); } /**