Moony
PHP Framework

Routes

Usage

Routy pro jednotlivé metody jsou pomocí atributu Moony\bootstrap\core\attributes\Route a volitelně lze použít prefix v rámci třídy Moony\bootstrap\core\attributes\RoutePrefix

Každá routa je defaultně zpracovávána jako GET, v případě potřeby zpracovat POST, je třeba to uvést v druhém (popř. v třetím parametru, pokud je potřeba zadat také název routy), viz. příklady níže. V případě potřeby lze zadat název routy jako druhý parametr v atributu

Název právě používané routy lze získat globální funkcí currentRouteName() a může být null, pokud aplikace neprošla HTTP Requestem.

use Moony\bootstrap\core\attributes\Route;
use Moony\bootstrap\core\enums\RequestTypeEnum;

// GET routa
#[Route('/index')];

// GET routa s názvem 'MyIndexRoute'
#[Route('/index', 'MyIndexRoute')];

// POST routa
#[Route('/index', RequestTypeEnum::POST)];

// POST routa s názvem 'MyIndexRoute'
#[Route('/index', 'MyIndexRoute', RequestTypeEnum::POST)];

Route variables

Každá routa může obsahovat proměnné zapasné <NÁZEV PODMÍNKA> a poté budou do metody předány parametrem, který musí mít stejný název, jako proměnná v routě.

int
Pouze čísla
id
Pouze čísla, ale minimum je 1
uuid
UUID 4
common
Nejběžnější charaktery v URL (a-z0-9-_).
common{MIN, MAX}
Stejné jako common. Možnost omezit min. a max. počet znaků (nechat prázdné pro neomezeno, např. common{32,} je omezení pro min. 32 znaků až do nekonečna.
equal{one,two,three,...}
Musí být přesně jedna z možností (odděleno čárkou).
regex{\d+}
Regex kontrola, bez ^ a $ pro začátek a konec, ten je přidán automaticky.
:DB-COLUMN{DB-TABLE[SELECT-COLUMNS]} +user ?
Vytáhne data přímo z databáze.
  • DB-COLUMN: Sloupec, podle kterého se záznam bude hledat (WHERE `DB-COLUMN` = ?)
  • DB-TABLE: Tabulka, ve které se bude hledat
  • SELECT-COLUMNS: (Volitelné) Čárkou oddělené sloupce, které vytáhnout. Pokud není uvedené tak se vytáhnou všechny.
  • +user: (Volitelné) Pokud je uvedeno, tak se ve WHERE přidá `user_id` = ? (id právě přihlášeného)
  • ?: (Volitelné) Pokud je uvedeno, tak v případě, že záznam neexistuje se metoda zavolá, ale parametru se předá NULL. Takový parametr musí být nullable!
#[Route('/show/item/<id int>')]
public function show(int $id) {}

#[Route('/show/item/<id id>')]
public function show(int $id) {}

#[Route('/show/item/<id uuid>')]
public function show(string $id) {}
...

#[Route('/show/item/<slug common>')]
public function show(string $slug) {}
...

#[Route('/show/item/<slug common{32}>')]
public function show(string $slug) {}
...

#[Route('/show/item/<item equal{item1,item2,item3}>')]
public function show(string $item) {}
...

#[Route('/show/item/<item regex{\w{5}-\w{10}}>')]
public function show(string $item) {}
...

#[Route('/show/item/<itemData :id{shop_items}>')]
public function show(array $itemData) {}
...

#[Route('/show/item/<itemData :id{shop_items}?>')]
public function show(?array $itemData) {}
...

#[Route('/show/item/<itemData :id{shop_items} +user ?>')]
public function show(?array $itemData) {}
...