1 | <?php |
||
16 | class ValidationException extends \Exception implements \JsonSerializable { |
||
17 | /** |
||
18 | * @var Validation |
||
19 | */ |
||
20 | private $validation; |
||
21 | |||
22 | /** |
||
23 | * Initialize an instance of the {@link ValidationException} class. |
||
24 | * |
||
25 | * @param Validation $validation The {@link Validation} object for the exception. |
||
26 | */ |
||
27 | 54 | public function __construct(Validation $validation) { |
|
28 | 54 | $this->validation = $validation; |
|
29 | 54 | parent::__construct($validation->getMessage(), (int)$validation->getStatus()); |
|
30 | 54 | } |
|
31 | |||
32 | /** |
||
33 | * Specify data which should be serialized to JSON. |
||
34 | * |
||
35 | * @link http://php.net/manual/en/jsonserializable.jsonserialize.php |
||
36 | * @return mixed data which can be serialized by <b>json_encode</b>, |
||
37 | * which is a value of any type other than a resource. |
||
38 | */ |
||
39 | public function jsonSerialize() { |
||
40 | $errors = $this->validation->getErrors(); |
||
41 | if (count($errors) === 1) { |
||
42 | $message = $errors[0]['message']; |
||
43 | } else { |
||
44 | $message = $this->getValidation()->translate('Validation failed.'); |
||
45 | } |
||
46 | |||
47 | $result = [ |
||
48 | 'message' => $message, |
||
49 | 'status' => $this->getCode(), |
||
50 | 'errors' => $errors |
||
51 | ]; |
||
52 | return $result; |
||
53 | } |
||
54 | |||
55 | /** |
||
56 | * Get the validation object that contain specific errors. |
||
57 | * |
||
58 | * @return Validation Returns a validation object. |
||
59 | */ |
||
60 | 38 | public function getValidation() { |
|
63 | } |
||
64 |