Files
ave-cms/help/helpers/Response.md
T
2026-07-27 12:58:44 +03:00

2.9 KiB

Response — HTTP-ответ

App\Helpers\Response — формирование ответов и статус-кодов. Методы сами ставят заголовки и код, поэтому обычно это последнее, что делает обработчик.

use App\Helpers\Response;

JSON

json($data, $status = 200, $flags = JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES)

JSON-ответ. Дефолтные флаги отдают читаемую кириллицу и не экранируют слеши.

Response::json(['items' => $items, 'total' => $total]);
Response::json(['error' => 'bad'], 400);

jsonSuccess($data = null, $message = '') / jsonError($message, $status = 400, $data = null)

Ответы в едином «успех/ошибка» формате.

Response::jsonSuccess($saved, 'Сохранено');
Response::jsonError('Документ не найден', 404);

Другие форматы

Response::html($html, 200);
Response::text($plain, 200);
Response::xml($xml, 200);

Файлы

download($filePath, $fileName = null, $mimeType = 'application/octet-stream')

Отдать файл как вложение (скачивание).

Response::download(BASEPATH . '/uploads/report.xlsx', 'Отчёт.xlsx');

inline($filePath, $mimeType = null, $fileName = null)

Показать файл в браузере (PDF, изображение).


Готовые статусы

Метод Код Когда
noContent() 204 Успех без тела (после удаления).
notFound($msg = 'Not Found') 404 Ресурс не найден.
forbidden($msg = 'Forbidden') 403 Нет прав.
unauthorized($msg) 401 Не авторизован.
unprocessable($errors, $msg = 'Validation failed') 422 Ошибки валидации (по полям).
tooManyRequests($msg, $retryAfter = null) 429 Троттлинг (+Retry-After).
serverError($msg) 500 Внутренняя ошибка.
if (!Permission::check('view_x')) { Response::forbidden(); return ''; }
$errors = Valid::check($_POST, $rules);
if ($errors) { Response::unprocessable($errors); return ''; }

Рецепты

Валидация → 422 с ошибками по полям:

$errors = Valid::check($_POST, ['email' => 'required|email']);
if ($errors) { Response::unprocessable($errors); return ''; }
Response::jsonSuccess(['id' => $id], 'Готово');

В контроллерах панели чаще используют обёртки success() / error() базового App\Common\Controller — они возвращают единый контракт (success/message/data/html/redirect/errors), который понимает Adminx.Ajax. Response::* — низкоуровневый слой под ними.