mirror of
https://github.com/avecms/AVE.cms.git
synced 2026-08-01 08:45:44 +00:00
2.9 KiB
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::*— низкоуровневый слой под ними.