Komplexnější komponenta – jak na to?
- emil
- Člen | 9
Zdravím zdejší komunitu. Potřebuji komponentu, která bude, jak jinak, znovupoužitelná. Principem to bude takový CRUD nad tabulkami. Potíž je v tom, že tato komponenta bude nabízet podle kontextu (třeba podle podle práv) různé formuláře nad stejnými tabulkami. Např. admin uvidí kompletní administrační formulář, ale redaktor jen formulář o 5-ti položkách. Vůbec nevím jak na to. Může mi prosím někdo zkušenější naznačit, jak na to? Ideálně si představuju nějaký základ (base-object) komponenty CRUDu. Z něj bych vytvářel konkrétní objekt pro správu jednotlivých tabulek (přes settery bych ho „konfiguroval“). Následně bych podle kontextu/práv odněkud „bral“ objekty formulářů. Snad jsem se do toho nezamotal. Díky za rady.
- echo
- Člen | 134
Zdravím,
lze to elegantně řešit kompozicí. Vytvoříš si třídu AdminFunctions
dědící od Nette\Form\Container a v konstruktoru nastavíš prvky
formuláře, ke kterým má přístup jen admin.
Dále si vytvoříš třídu reprezentující základní formulář s prvky dostupnými pro všechny. (\EditForm)
V presenteru podle role zjistíš, jestli je uživatel admin. Když ano, tak $editForm->addContainer(AdminFunctions).