Attributes

Přehled dostupných PHP atributů pro kontrolery a metody v nich. Namespace: Moony\bootstrap\core\attributes

RouteDefinuje URL cestu pro metodu. Pouze pro metody. Lze opakovat (IS_REPEATABLE).
RoutePrefixPrefix URL pro všechny routy v kontroleru. Pouze pro třídy.
SubmenuBaseRoutePrefix match — metoda zpracuje všechny URL začínající tímto prefixem. Pouze pro metody. Používá se s SubmenuComponent.
AuthPouze pro přihlášené uživatele. Pro třídy i metody.
NotAuthPouze pro NEpřihlášené uživatele. Pro třídy i metody.
AllowAnonymousVýjimka z [Auth] nad celým kontrolerem — povolí přístup i nepřihlášeným. Pouze pro metody.
AjaxPovolí pouze AJAX požadavky. Pouze pro metody.
AdminPouze pro administrátory. Volitelně s konkrétními právy. Pro třídy i metody.
SuperAdminPouze 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).