Attributes
Přehled dostupných PHP atributů pro kontrolery a metody v nich. Namespace: Moony\bootstrap\core\attributes
| Route | Definuje URL cestu pro metodu. Pouze pro metody. Lze opakovat (IS_REPEATABLE). |
| RoutePrefix | Prefix URL pro všechny routy v kontroleru. Pouze pro třídy. |
| SubmenuBaseRoute | Prefix match — metoda zpracuje všechny URL začínající tímto prefixem. Pouze pro metody. Používá se s SubmenuComponent. |
| Auth | Pouze pro přihlášené uživatele. Pro třídy i metody. |
| NotAuth | Pouze pro NEpřihlášené uživatele. Pro třídy i metody. |
| AllowAnonymous | Výjimka z [Auth] nad celým kontrolerem — povolí přístup i nepřihlášeným. Pouze pro metody. |
| Ajax | Povolí pouze AJAX požadavky. Pouze pro metody. |
| Admin | Pouze pro administrátory. Volitelně s konkrétními právy. Pro třídy i metody. |
| SuperAdmin | Pouze pro Super administrátory. Pro třídy i metody. |
Route — parametry
// Základní route (GET)
#[Route('/dashboard')]
public function dashboard() {}
// POST route
#[Route('/login', RequestTypeEnum::POST)]
public function loginPost() {}
// Pojmenovaná route (pro route() helper)
#[Route('/profile', 'profile.show')]
public function profile() {}
// Pojmenovaná route + POST
#[Route('/profile/update', 'profile.update', RequestTypeEnum::POST)]
public function profileUpdate() {}
// Více rout na jednu metodu (IS_REPEATABLE)
#[Route('/settings')]
#[Route('/settings/page/<page common>')]
public function settings(int $page = 1) {}
SubmenuBaseRoute
Slouží pro stránky s více záložkami (submenu). Metoda zpracuje všechny URL s daným prefixem a SubmenuComponent rozhodne, která záložka se zobrazí.
#[SubmenuBaseRoute('get-started')]
public function getStarted(): View
{
$submenu = new SubmenuComponent();
$submenu->addItem(new SubmenuItem(
label: 'Directory Structure',
url: 'directory-structure',
render: new View('account/docs/get-started/directory-structure'),
));
$submenu->addItem(new SubmenuItem(
label: 'CLI Commands',
url: 'cli-commands',
render: new View('account/docs/get-started/cli-commands'),
));
return $submenu->render();
}
Auth, NotAuth, AllowAnonymous
#[NotAuth]
#[RoutePrefix('app')]
class LoginController
{
#[Route('/login')]
public function login() {}
#[Ajax]
#[Route('/login', RequestTypeEnum::POST)]
public function loginPost() {}
}
#[Auth]
#[RoutePrefix('app')]
class HomeController
{
#[Route('/home')]
public function home() {}
#[AllowAnonymous]
#[Route('/visit')]
public function visit() {}
}
Admin práva
Atribut Admin lze použít bez parametrů (jakýkoli admin) nebo s konkrétními právy z AdminRightsEnum.
// Jakýkoli admin
#[Admin]
#[RoutePrefix('admin')]
class AdminController
{
// Admin s konkrétním právem
#[Admin(AdminRightsEnum::DASHBOARD_VIEW)]
#[Route('/dashboard')]
public function dashboard() {}
}
// OR — admin musí mít alespoň jedno z práv
#[Admin(AdminRightsEnum::DASHBOARD_VIEW, AdminRightsEnum::DASHBOARD_EDIT)]
public function dashboard() {}
// AND — admin musí mít obě práva (opakovaný atribut)
#[Admin(AdminRightsEnum::DASHBOARD_VIEW)]
#[Admin(AdminRightsEnum::DASHBOARD_EDIT)]
public function dashboard() {}
Pokud admin nemá požadovaná práva, zavolá se FallbackController s HTTP 403 (Forbidden).
