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 ...