139 lines
2.9 KiB
PHP
139 lines
2.9 KiB
PHP
<?php
|
|
|
|
namespace Illuminate\Validation;
|
|
|
|
use Exception;
|
|
use Illuminate\Support\Arr;
|
|
use Illuminate\Support\Facades\Validator as ValidatorFacade;
|
|
|
|
class ValidationException extends Exception
|
|
{
|
|
/**
|
|
* The validator instance.
|
|
*
|
|
* @var \Illuminate\Contracts\Validation\Validator
|
|
*/
|
|
public $validator;
|
|
|
|
/**
|
|
* The recommended response to send to the client.
|
|
*
|
|
* @var \Symfony\Component\HttpFoundation\Response|null
|
|
*/
|
|
public $response;
|
|
|
|
/**
|
|
* The status code to use for the response.
|
|
*
|
|
* @var int
|
|
*/
|
|
public $status = 422;
|
|
|
|
/**
|
|
* The name of the error bag.
|
|
*
|
|
* @var string
|
|
*/
|
|
public $errorBag;
|
|
|
|
/**
|
|
* The path the client should be redirected to.
|
|
*
|
|
* @var string
|
|
*/
|
|
public $redirectTo;
|
|
|
|
/**
|
|
* Create a new exception instance.
|
|
*
|
|
* @param \Illuminate\Contracts\Validation\Validator $validator
|
|
* @param \Symfony\Component\HttpFoundation\Response $response
|
|
* @param string $errorBag
|
|
* @return void
|
|
*/
|
|
public function __construct($validator, $response = null, $errorBag = 'default')
|
|
{
|
|
parent::__construct('The given data was invalid.');
|
|
|
|
$this->response = $response;
|
|
$this->errorBag = $errorBag;
|
|
$this->validator = $validator;
|
|
}
|
|
|
|
/**
|
|
* Create a new validation exception from a plain array of messages.
|
|
*
|
|
* @param array $messages
|
|
* @return static
|
|
*/
|
|
public static function withMessages(array $messages)
|
|
{
|
|
return new static(tap(ValidatorFacade::make([], []), function ($validator) use ($messages) {
|
|
foreach ($messages as $key => $value) {
|
|
foreach (Arr::wrap($value) as $message) {
|
|
$validator->errors()->add($key, $message);
|
|
}
|
|
}
|
|
}));
|
|
}
|
|
|
|
/**
|
|
* Get all of the validation error messages.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function errors()
|
|
{
|
|
return $this->validator->errors()->messages();
|
|
}
|
|
|
|
/**
|
|
* Set the HTTP status code to be used for the response.
|
|
*
|
|
* @param int $status
|
|
* @return $this
|
|
*/
|
|
public function status($status)
|
|
{
|
|
$this->status = $status;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Set the error bag on the exception.
|
|
*
|
|
* @param string $errorBag
|
|
* @return $this
|
|
*/
|
|
public function errorBag($errorBag)
|
|
{
|
|
$this->errorBag = $errorBag;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Set the URL to redirect to on a validation error.
|
|
*
|
|
* @param string $url
|
|
* @return $this
|
|
*/
|
|
public function redirectTo($url)
|
|
{
|
|
$this->redirectTo = $url;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get the underlying response instance.
|
|
*
|
|
* @return \Symfony\Component\HttpFoundation\Response|null
|
|
*/
|
|
public function getResponse()
|
|
{
|
|
return $this->response;
|
|
}
|
|
}
|