Skip to content

Commit 19a384a

Browse files
authored
Revert "Change controller validate helper method to behave like Laravel (#1247) (#1248)" (#1249)
This reverts commit 94445c4.
1 parent 9047399 commit 19a384a

File tree

1 file changed

+34
-19
lines changed

1 file changed

+34
-19
lines changed

src/Routing/ProvidesConvenienceMethods.php

Lines changed: 34 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Illuminate\Contracts\Bus\Dispatcher;
88
use Illuminate\Http\JsonResponse;
99
use Illuminate\Http\Request;
10+
use Illuminate\Support\Str;
1011
use Illuminate\Validation\ValidationException;
1112
use Illuminate\Validation\Validator;
1213

@@ -63,27 +64,41 @@ public function validate(Request $request, array $rules, array $messages = [], a
6364
{
6465
$validator = $this->getValidationFactory()->make($request->all(), $rules, $messages, $customAttributes);
6566

66-
try {
67-
$validated = $validator->validate();
68-
69-
if (method_exists($this, 'extractInputFromRules')) {
70-
// Backwards compatability...
71-
$validated = $this->extractInputFromRules($request, $rules);
72-
}
73-
} catch (ValidationException $exception) {
74-
if (method_exists($this, 'throwValidationException')) {
75-
// Backwards compatability...
76-
$this->throwValidationException($request, $validator);
77-
} else {
78-
$exception->response = $this->buildFailedValidationResponse(
79-
$request, $this->formatValidationErrors($validator)
80-
);
81-
82-
throw $exception;
83-
}
67+
if ($validator->fails()) {
68+
$this->throwValidationException($request, $validator);
8469
}
8570

86-
return $validated;
71+
return $this->extractInputFromRules($request, $rules);
72+
}
73+
74+
/**
75+
* Get the request input based on the given validation rules.
76+
*
77+
* @param \Illuminate\Http\Request $request
78+
* @param array $rules
79+
* @return array
80+
*/
81+
protected function extractInputFromRules(Request $request, array $rules)
82+
{
83+
return $request->only(collect($rules)->keys()->map(function ($rule) {
84+
return Str::contains($rule, '.') ? explode('.', $rule)[0] : $rule;
85+
})->unique()->toArray());
86+
}
87+
88+
/**
89+
* Throw the failed validation exception.
90+
*
91+
* @param \Illuminate\Http\Request $request
92+
* @param \Illuminate\Contracts\Validation\Validator $validator
93+
* @return void
94+
*
95+
* @throws \Illuminate\Validation\ValidationException
96+
*/
97+
protected function throwValidationException(Request $request, $validator)
98+
{
99+
throw new ValidationException($validator, $this->buildFailedValidationResponse(
100+
$request, $this->formatValidationErrors($validator)
101+
));
87102
}
88103

89104
/**

0 commit comments

Comments
 (0)