File tree Expand file tree Collapse file tree 3 files changed +27
-2
lines changed
Expand file tree Collapse file tree 3 files changed +27
-2
lines changed Original file line number Diff line number Diff line change @@ -446,10 +446,17 @@ public function endsWith(string ...$value): self
446446 *
447447 * @link https://laravel.com/docs/10.x/validation#rule-enum
448448 * @param class-string $type
449+ * @param ?callable(\Illuminate\Validation\Rules\Enum): void $modifier
449450 */
450- public function enum (string $ type ): self
451+ public function enum (string $ type, ? callable $ modifier = null ): self
451452 {
452- return $ this ->rule (Rule::enum ($ type ));
453+ $ rule = Rule::enum ($ type );
454+
455+ if ($ modifier ) {
456+ $ modifier ($ rule );
457+ }
458+
459+ return $ this ->rule ($ rule );
453460 }
454461
455462 /**
Original file line number Diff line number Diff line change 66
77enum ExampleStringEnum: string
88{
9+ case Another = 'another ' ;
910 case Valid = 'valid ' ;
1011}
Original file line number Diff line number Diff line change 1818use Illuminate \Support \Facades \Validator ;
1919use Illuminate \Support \Str ;
2020use Illuminate \Validation \Rules \Dimensions ;
21+ use Illuminate \Validation \Rules \Enum ;
2122use Illuminate \Validation \Rules \Password ;
2223use Sourcetoad \RuleHelper \Rule ;
2324use Sourcetoad \RuleHelper \RuleSet ;
@@ -953,6 +954,22 @@ public function ruleDataProvider(): array
953954 'rules ' => fn () => RuleSet::create ()->enum (ExampleIntEnum::class),
954955 'fails ' => true ,
955956 ],
957+ 'enum string constrained valid ' => [
958+ 'data ' => 'another ' ,
959+ 'rules ' => fn () => RuleSet::create ()->enum (
960+ ExampleStringEnum::class,
961+ fn (Enum $ rule ) => $ rule ->only (ExampleStringEnum::Another),
962+ ),
963+ 'fails ' => false ,
964+ ],
965+ 'enum string constrained invalid ' => [
966+ 'data ' => 'another ' ,
967+ 'rules ' => fn () => RuleSet::create ()->enum (
968+ ExampleStringEnum::class,
969+ fn (Enum $ rule ) => $ rule ->except (ExampleStringEnum::Another),
970+ ),
971+ 'fails ' => true ,
972+ ],
956973 'extensions valid ' => [
957974 'data ' => fn () => $ this ->mockFile ('/code/image.jpg ' ),
958975 'rules ' => fn () => RuleSet::create ()->extensions ('jpg ' , 'png ' ),
You can’t perform that action at this time.
0 commit comments