ValidatesRequests.php
TLDR
This file provides a trait called ValidatesRequests
that contains methods for validating requests in the Laravel framework.
Methods
validateWith
This method runs the validation routine against the given validator or array of validation rules. It accepts a validator or an array of rules and an optional request object. It returns an array of validated input.
validate
This method validates the given request with the given rules. It accepts a request object, an array of rules, an optional array of custom error messages, and an optional array of attribute names. It returns an array of validated input.
validateWithBag
This method validates the given request with the given rules and assigns the error messages to the specified error bag. It accepts a string representing the error bag, a request object, an array of rules, an optional array of custom error messages, and an optional array of attribute names. It returns an array of validated input.
getValidationFactory
This method returns an instance of the validation factory.
<?php
namespace Illuminate\Foundation\Validation;
use Illuminate\Contracts\Validation\Factory;
use Illuminate\Foundation\Precognition;
use Illuminate\Http\Request;
use Illuminate\Validation\ValidationException;
trait ValidatesRequests
{
/**
* Run the validation routine against the given validator.
*
* @param \Illuminate\Contracts\Validation\Validator|array $validator
* @param \Illuminate\Http\Request|null $request
* @return array
*
* @throws \Illuminate\Validation\ValidationException
*/
public function validateWith($validator, Request $request = null)
{
$request = $request ?: request();
if (is_array($validator)) {
$validator = $this->getValidationFactory()->make($request->all(), $validator);
}
if ($request->isPrecognitive()) {
$validator->after(Precognition::afterValidationHook($request))
->setRules(
$request->filterPrecognitiveRules($validator->getRulesWithoutPlaceholders())
);
}
return $validator->validate();
}
/**
* Validate the given request with the given rules.
*
* @param \Illuminate\Http\Request $request
* @param array $rules
* @param array $messages
* @param array $attributes
* @return array
*
* @throws \Illuminate\Validation\ValidationException
*/
public function validate(Request $request, array $rules,
array $messages = [], array $attributes = [])
{
$validator = $this->getValidationFactory()->make(
$request->all(), $rules, $messages, $attributes
);
if ($request->isPrecognitive()) {
$validator->after(Precognition::afterValidationHook($request))
->setRules(
$request->filterPrecognitiveRules($validator->getRulesWithoutPlaceholders())
);
}
return $validator->validate();
}
/**
* Validate the given request with the given rules.
*
* @param string $errorBag
* @param \Illuminate\Http\Request $request
* @param array $rules
* @param array $messages
* @param array $attributes
* @return array
*
* @throws \Illuminate\Validation\ValidationException
*/
public function validateWithBag($errorBag, Request $request, array $rules,
array $messages = [], array $attributes = [])
{
try {
return $this->validate($request, $rules, $messages, $attributes);
} 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);
}
}