Jet\MVC_Controller_Router

Po té co jsme si vysvětlili základní smysl a princip mikrorouteru, tak je čas kouknout podrobně na třídu Jet\MVC_Controller_Router a také na její interface Jet\MVC_Controller_Router_Interface.

Přehled metod

Metoda Význam
public __construct(
MVC_Controller $controller
)
Konstruktoru je nutné předat instanci kontroleru, kterému bude mikrorouter sloužit. Vazba je tedy vzájemná. Kontroler má držet instanci mikrorouteru a mikrorouter drží instanci kontroleru.
public addAction(
string $controller_action_name,
string $module_action_name = ''
): MVC_Controller_Router_Action
Založí akci a následně vrátí její instanci.
Akce je tedy založena, ale není nastavena - minimálně je nutné definovat resolver.

Podívejme se na parametry, protože tam již naleznete cestu jak ověřovat oprávnění.
  • controller_action_name Akce kontroleru - toto bylo vysvětleno v předchozí kapitole.
  • module_action_name Název ACL akce aplikačního modulu. Více se dozvíte v kapitolách o modulech, ale alespoň stručné vysvětlení zde uvedu: Aplikační moduly mohou definovat svou sadu akcí / operací. Oprávnění je pak možné nastavovat pomocí uživatelských rolích a kontrolovat zda přihlášený uživatel má potřebná práva a může akci provést. Toto je opět samostatné téma autentizace a autorizace. Důležité je, že akci mikrorouteru lze rovnou na akci aplikačního modulu namapovat a mikrorouter tak okamžitě může řešit zda je akce aktuálnímu uživateli přístupná.

    Parametr není povinný. Když není specifikován, pak se žádná kontrola oprávnění neprovádí.
public getActions(
): MVC_Controller_Router_Action[]
Vrátí seznam všech definovaných akcí mikrorouteru.
public getAction(
string $controller_action_name
): MVC_Controller_Router_Action
Vrátí definovanou akci. Akce musí existovat. Metoda neověřuje zda je definována. To je záměr, aby při požadavku na neexistující akci raději aplikace "spadla" a nedostala se do nedefinovaného stavu. Definice akcí a jejich použití musí být konzistentní.
public action(
string $action_name
): MVC_Controller_Router_Action
Jedná se o alias metody getAction pro kratší zápis.
public setDefaultAction(
string $controller_action_name,
string $module_action_name = ''
): MVC_Controller_Router_Action
Mikrorouter umožňuje definovat výchozí akci. Tedy takovou akci, která je platná a aplikována když žádná z definovaných akcí nebyla rozpoznána jako relevantní.
public getDefaultAction(
): MVC_Controller_Router_Action
Vrátí instanci výchozí akce.
public getController(
): MVC_Controller
Vrátí instanci kontroleru ke kterému mikrorouter náleží.
public resolve(
): bool|string
Tato metoda provede vyhodnocení. Metoda vrací buď bool hodnotu false, nebo název akce, která má být provedena (tedy string). Řekněme si něco o algoritmu vyhodnocení:
  • Pokud je nalezená relevantní akce a akce nemá definovanou ACL akci modulu, nebo ACL akci definovanou má, ale kontrola oprávnění akci povolí, tak v tomto případě je vrácen název akce.
  • Pokud je nalezena relevantní akce, ale nevyhoví kontrola oprávnění, tak je zavolána metoda kontroleru handleNotAuthorized() a je vráceno false.
  • Pokud žádná relevantní akce není nalezena a není definována výchozí akce, tak je vráceno false.
  • Pokud žádná relevantní akce není nalezena, ale je definována výchozí akce, pak je vrácen název výchozí akce. Ale to pouze za předpokladu, že výchozí akce nemá definovanou ACL akci modulu, nebo akce prošla kontrolou oprávnění. Pokud ne, tak je vráceno false a pokud neprojde kontrole oprávnění je zároveň zavolána metoda kontroleru handleNotAuthorized().

A pro úplnost prosím koukněte na třídu MVC_Controller_Router_Action.

Předchozí kapitola
Mikrorouter kontroleru
Další kapitola
Jet\MVC_Controller_Router_Action