Vypis vsetkych presenterov seo

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
erikbalog
Člen | 27
+
+1
-

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
+
+2
-

Š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.

erikbalog
Člen | 27
+
0
-

A je aj nejaka ina metoda na seo cez administraciu? Chcem ze jed pridam novy presentet UserPresenter s renderDefault tak nech sa v admin zobrazi nastavenie seo pre user default.. Mna napadlo len toto s presenterami

Pavel Kravčík
Člen | 1196
+
+1
-

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. :)