Skip to content

Commit 356ea53

Browse files
authored
Fixed BC when validation rule not define. (#7596)
1 parent 3edbed7 commit 356ea53

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

src/Request/FormRequest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ protected function getRules(): array
208208
foreach ($this->scenes[$scene] as $key => $value) {
209209
if (is_string($key)) {
210210
$result[$key] = $value;
211-
} elseif (is_numeric($key) && is_string($value)) {
211+
} elseif (is_numeric($key) && is_string($value) && isset($rules[$value])) {
212212
$result[$value] = $rules[$value];
213213
}
214214
}

tests/Cases/FormRequestTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,11 @@ class FormRequestTest extends TestCase
4848
{
4949
protected function tearDown(): void
5050
{
51+
parent::tearDown();
5152
Mockery::close();
5253
Context::set(ServerRequestInterface::class, null);
5354
Context::set('http.request.parsedData', null);
55+
Context::set(ContainerInterface::class, null);
5456
}
5557

5658
public function testRequestValidationData()
@@ -130,6 +132,14 @@ public function testRewriteRules()
130132
$invoker->scene('get');
131133
$rules = $invoker->getRules();
132134
$this->assertSame(['mobile' => 'string|required'], $rules);
135+
136+
$invoker->scene('not-exists-field-1');
137+
$rules = $invoker->getRules();
138+
$this->assertSame(['not-exists-field-1' => 'required'], $rules);
139+
140+
$invoker->scene('not-exists-field-2');
141+
$rules = $invoker->getRules();
142+
$this->assertSame([], $rules);
133143
}
134144

135145
public function testSceneForFormRequest()
@@ -151,6 +161,7 @@ public function testSceneForFormRequest()
151161

152162
$request = new FooSceneRequest($container);
153163
$res = $request->scene('info')->validated();
164+
154165
$this->assertSame(['mobile' => '12345'], $res);
155166

156167
wait(function () use ($request, $psrRequest) {

tests/Cases/Stub/FooSceneRequest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ class FooSceneRequest extends FormRequest
2020
'save' => ['mobile', 'name'],
2121
'info' => ['mobile'],
2222
'get' => ['mobile' => 'string|required'],
23+
'not-exists-field-1' => ['not-exists-field-1' => 'required'],
24+
'not-exists-field-2' => ['not-exists-field-2'],
2325
];
2426

2527
public function authorize(): bool

0 commit comments

Comments
 (0)