File tree Expand file tree Collapse file tree 3 files changed +25
-2
lines changed Expand file tree Collapse file tree 3 files changed +25
-2
lines changed Original file line number Diff line number Diff line change 1212
1313namespace Hyperf \Validation \Request ;
1414
15- use Hyperf \Collection \Arr ;
1615use Hyperf \Context \Context ;
1716use Hyperf \Context \ResponseContext ;
1817use Hyperf \Contract \ValidatorInterface ;
@@ -205,7 +204,15 @@ protected function getRules(): array
205204 $ rules = $ this ->rules ();
206205 $ scene = $ this ->getScene ();
207206 if ($ scene && isset ($ this ->scenes [$ scene ]) && is_array ($ this ->scenes [$ scene ])) {
208- return Arr::only ($ rules , $ this ->scenes [$ scene ]);
207+ $ result = [];
208+ foreach ($ this ->scenes [$ scene ] as $ key => $ value ) {
209+ if (is_string ($ key )) {
210+ $ result [$ key ] = $ value ;
211+ } elseif (is_numeric ($ key ) && is_string ($ value )) {
212+ $ result [$ value ] = $ rules [$ value ];
213+ }
214+ }
215+ return $ result ;
209216 }
210217 return $ rules ;
211218 }
Original file line number Diff line number Diff line change 1919use Hyperf \Coroutine \Waiter ;
2020use Hyperf \HttpMessage \Server \Response ;
2121use Hyperf \HttpMessage \Upload \UploadedFile ;
22+ use Hyperf \Support \Reflection \ClassInvoker ;
2223use Hyperf \Translation \ArrayLoader ;
2324use Hyperf \Translation \Translator ;
2425use Hyperf \Validation \Contract \ValidatorFactoryInterface ;
@@ -117,6 +118,20 @@ public function testRewriteGetRules()
117118 }
118119 }
119120
121+ public function testRewriteRules ()
122+ {
123+ $ container = Mockery::mock (ContainerInterface::class);
124+
125+ $ request = new FooSceneRequest ($ container );
126+ $ invoker = new ClassInvoker ($ request );
127+ $ rules = $ invoker ->getRules ();
128+ $ this ->assertSame (['mobile ' => 'required ' , 'name ' => 'required ' ], $ rules );
129+
130+ $ invoker ->scene ('get ' );
131+ $ rules = $ invoker ->getRules ();
132+ $ this ->assertSame (['mobile ' => 'string|required ' ], $ rules );
133+ }
134+
120135 public function testSceneForFormRequest ()
121136 {
122137 $ psrRequest = Mockery::mock (ServerRequestPlusInterface::class);
Original file line number Diff line number Diff line change @@ -19,6 +19,7 @@ class FooSceneRequest extends FormRequest
1919 public array $ scenes = [
2020 'save ' => ['mobile ' , 'name ' ],
2121 'info ' => ['mobile ' ],
22+ 'get ' => ['mobile ' => 'string|required ' ],
2223 ];
2324
2425 public function authorize (): bool
You can’t perform that action at this time.
0 commit comments