getValidationFactory()->make($request->all(), $validator); } $validator->validate(); return $this->extractInputFromRules($request, $validator->getRules()); } /** * Validate the given request with the given rules. * * @param \Illuminate\Http\Request $request * @param array $rules * @param array $messages * @param array $customAttributes * @return array */ public function validate(Request $request, array $rules, array $messages = [], array $customAttributes = []) { $this->getValidationFactory() ->make($request->all(), $rules, $messages, $customAttributes) ->validate(); return $this->extractInputFromRules($request, $rules); } /** * Get the request input based on the given validation rules. * * @param \Illuminate\Http\Request $request * @param array $rules * @return array */ protected function extractInputFromRules(Request $request, array $rules) { return $request->only(collect($rules)->keys()->map(function ($rule) { return Str::contains($rule, '.') ? explode('.', $rule)[0] : $rule; })->unique()->toArray()); } /** * Validate the given request with the given rules. * * @param string $errorBag * @param \Illuminate\Http\Request $request * @param array $rules * @param array $messages * @param array $customAttributes * @return array * * @throws \Illuminate\Validation\ValidationException */ public function validateWithBag($errorBag, Request $request, array $rules, array $messages = [], array $customAttributes = []) { try { return $this->validate($request, $rules, $messages, $customAttributes); } catch (ValidationException $e) { $e->errorBag = $errorBag; throw $e; } } /** * Get a validation factory instance. * * @return \Illuminate\Contracts\Validation\Factory */ protected function getValidationFactory() { return app(Factory::class); } }