Request
Třída Moony\bootstrap\core\services\Request je plně statická a lze ji volat odkudkoli v aplikaci bez potřeby dependency injection.
GET parametry
| Request::queryParam(string $name, ?string $default = null) | Vrátí GET parametr podle názvu, nebo výchozí hodnotu |
| Request::queryParamAll() | Vrátí celé pole $_GET |
| Request::setQueryParam(string $key, mixed $value) | Nastaví GET parametr |
POST a FILES
| Request::input(string $name, ?string $default = null) | Vrátí POST hodnotu nebo nahraný soubor podle názvu |
| Request::inputAll() | Vrátí sloučené pole $_POST + $_FILES |
| Request::setInput(string $key, mixed $value) | Nastaví POST hodnotu |
| Request::inputAllAsJson(bool $excludeFiles = true) | Vrátí POST data jako JSON string |
| Request::hasInput(string $name) | Vrátí true pokud input existuje v POST nebo FILES |
URL a HTTP
| Request::getUrl(bool $withQueryString = false) | Vrátí aktuální URL bez domény. S parametrem true vrátí i query string. |
| Request::getDomain() | Vrátí doménu (HTTP_HOST) |
| Request::getType() | Vrátí RequestTypeEnum::GET nebo RequestTypeEnum::POST |
| Request::isPost() | Vrátí true pokud jde o POST požadavek |
| Request::isGet() | Vrátí true pokud jde o GET požadavek |
| Request::is(string $pattern) | Kontrola URL. Podporuje wildcard: Request::is('admin/*') |
| Request::isAjax() | Vrátí true pokud jde o AJAX požadavek |
| Request::getIp() | IP adresa klienta |
| Request::getUserAgent() | User-Agent klienta |
Headers a Payload
| Request::getHeader(string $name) | Vrátí konkrétní HTTP hlavičku |
| Request::getAllHeaders() | Vrátí všechny HTTP hlavičky |
| Request::getPayload() | Vrátí raw body requestu (php://input) |
| Request::getPayloadJsonDecoded() | Dekóduje JSON payload do pole. Při chybě vrátí null a trigger_error. |
Upload souborů
| Request::moveUploadedFile(string $inputName, string $destination, ?string $fileName, ?string $fileExtension) | Přesune nahraný soubor do cílové složky. Vrátí pole s fileName, fileExtension, absolutePath, relativePath. |
Custom data storage
| Request::setData(string $key, mixed $value) | Uloží vlastní data do Request kontextu (dostupná po celý lifecycle requestu) |
| Request::getData(string $key) | Přečte uložená data |
Validace
Viz sekce POST Validation v menu.
Response
Třída Moony\bootstrap\core\services\Response je plně statická pro odesílání odpovědí klientovi.
JSON odpovědi
| Response::json(array $data) | Odešle JSON a ukončí skript |
| Response::jsonSuccess(array $data = []) | Odešle JSON s {"status": true, ...} a ukončí skript |
| Response::jsonError(?string $text, array $data = []) | Odešle JSON s {"status": false, "text": "..."} a ukončí skript |
HTML a View odpovědi
| Response::send(string|View $view) | Odešle HTML nebo View a ukončí skript |
| Response::sendAndContinueExecution(string|View $view) | Odešle odpověď klientovi, ale PHP skript pokračuje dál (pro background úkoly) |
Redirect
| Response::redirect(?string $location, array $variables = [], int $httpStatusCode = 303) | Přesměruje na danou URL. Proměnné lze předat do další stránky. |
| Response::reload() | Přesměruje na aktuální stránku (reload) |
| Response::setRedirectVariables(array $variables) | Nastaví proměnné, které budou dostupné po redirectu (přes session) |
Hlavičky a soubory
| Response::setHeader(string $name, string $value) | Nastaví HTTP hlavičku |
| Response::setHttpStatusCode(int $code) | Nastaví HTTP status kód |
| Response::setContentType(string $contentType) | Nastaví Content-Type hlavičku |
| Response::fileDownload(string $filePath, ?string $fileName, ?string $contentType) | Odešle soubor ke stažení |
Příklady
// AJAX endpoint — úspěšná odpověď
#[Ajax]
#[Route('/api/user/update', RequestTypeEnum::POST)]
public function updateUser(): void
{
// ... zpracování ...
Response::jsonSuccess(['message' => 'Uživatel aktualizován']);
}
// AJAX endpoint — chybová odpověď
Response::jsonError('Neplatný požadavek', ['code' => 422]);
// Redirect s proměnnými (flash messages)
Response::redirect('/dashboard', ['success' => 'Změny uloženy']);
// Stažení souboru
Response::fileDownload(ROOT . 'storage/exports/report.pdf', 'report.pdf');
// Odpověď a pokračování (dlouhý background task)
Response::sendAndContinueExecution('OK');
// ... další zpracování po odeslání odpovědi klientovi ...
