Vypis vsetkych presenterov seo
- erikbalog
- Člen | 27
Zdravim, chcem sa spytat ci nette obsahuje funkciu pre vypis vsetkych presenterov a ich akcii. Chcem spravit administraciu seo (ako to ma prestashop).. Napr pre stranku profil:show si nastavim vo formulari /profile/<id> .. Ale tak aby sa mi vsetky mozne akcie vypisali ako input polia
Dakujem
- CZechBoY
- Člen | 3608
Šel bych spíš cestou kombinací šablon a presenterů – akce totiž nemusí mít metodu v presenteru, ale musí mít šablonu (je-li vykreslitelná samozřejmě).
Seznam presenterů lze vytáhnout z DI
$presenters = $this->dic->findByType('Nette\Application\UI\Presenter');
a potom pro každý presenter najít všechny action/render metody (pozor nepočítá s vlastní implementací metod formatActionMethod a formatRenderMethod)
$presenterMethods = get_class_methods($presenter);
$actionRenderNames = array_unique($presenterMethods, array_filter(function($methodName) {
return preg_match('~^(?:action|render).+~', $methodName);
});
A šablony už třeba zvládneš sám, jen je potřeba mít na paměti, že zase formatTemplateFiles může změnit název souboru šablony.
- Pavel Kravčík
- Člen | 1196
Děláme to podobně, akorát nepoužíváme DIC, ale klasický finder s podmínkami.
Ve chvíli kdy najdeme presenter se kontroluje v jakém je modulu a začne se parsovat config toho konkrétního modulu. V něm máme něco podobného:
acl:
User:
- default
- profile
Player:
To už si můžeš udělat, jak budeš potřebovat. Základní nastavení je přístup do celého presenteru a všech akcí anebo pokud má definované akce zvlášť – tak se dá nastavit i určitá granulita. Presenter user může mít více akcí (třeba logout), ale na něj nechci nastavovat práva.
Pointa je, že snaží bude ten seznam definovat při psaní konkrétní části aplikace, než to pak nějak hromadně načítat a přidávat tam podmínky a dráty, pokud budeš něco chtít skrýt. :)