Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit fc0c66f

Browse filesBrowse files
[12.x] Add a default option when retrieving an enum from data (#55735)
* Add a default option when retrieving an enum from data * Update InteractsWithData.php --------- Co-authored-by: Taylor Otwell <taylor@laravel.com>
1 parent 53687e4 commit fc0c66f
Copy full SHA for fc0c66f

File tree

Expand file treeCollapse file tree

2 files changed

+7
-3
lines changed
Filter options
Expand file treeCollapse file tree

2 files changed

+7
-3
lines changed

‎src/Illuminate/Support/Traits/InteractsWithData.php

Copy file name to clipboardExpand all lines: src/Illuminate/Support/Traits/InteractsWithData.php
+4-3Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -312,15 +312,16 @@ public function date($key, $format = null, $tz = null)
312312
*
313313
* @param string $key
314314
* @param class-string<TEnum> $enumClass
315+
* @param TEnum|null $default
315316
* @return TEnum|null
316317
*/
317-
public function enum($key, $enumClass)
318+
public function enum($key, $enumClass, $default = null)
318319
{
319320
if ($this->isNotFilled($key) || ! $this->isBackedEnum($enumClass)) {
320-
return null;
321+
return value($default);
321322
}
322323

323-
return $enumClass::tryFrom($this->data($key));
324+
return $enumClass::tryFrom($this->data($key)) ?: value($default);
324325
}
325326

326327
/**

‎tests/Http/HttpRequestTest.php

Copy file name to clipboardExpand all lines: tests/Http/HttpRequestTest.php
+3Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -804,6 +804,9 @@ public function testEnumMethod()
804804

805805
$this->assertNull($request->enum('doesnt_exist', TestEnumBacked::class));
806806

807+
$this->assertEquals(TestEnumBacked::test, $request->enum('invalid_enum_value', TestEnumBacked::class, TestEnumBacked::test));
808+
$this->assertEquals(TestEnumBacked::test, $request->enum('missing_key', TestEnumBacked::class, TestEnumBacked::test));
809+
807810
$this->assertEquals(TestEnumBacked::test, $request->enum('valid_enum_value', TestEnumBacked::class));
808811

809812
$this->assertNull($request->enum('invalid_enum_value', TestEnumBacked::class));

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.