Zjistění všech preseterů a jejich funci?

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

Zdravím, chtěl jsem se zeptat zda je možné zjistit jednoduše všechny presentery s jejich funkcemi typu render a action apod.
Chtěl bych udělat jednoduchý nástroj kde by se dalo každé funkci přiřazovat opravnění ale tak aby když vznikne nová fce v presenteru aby se automaticky přidala do formuláře o oprávněních.

Snad jsem to popsal dostatečně…

looky
Člen | 99
+
0
-

Hmm, Container má metodu findByType kterou si můžeš vytáhnout všechny IPresenter. A metody pak můžeš najít reflexí..

romiix.org
Člen | 343
+
+1
-

Znie to zaujímavo;)

Robil by som to cez Extension.
Urobíš službu ktorá bude do seba ukladať zoznam presenterov a ich metód.
CompilerExtension beforeCompile() získaš zozam presenterov cez Builder.

class AclExtension extends CompilerExtension
{
	function beforeCompile()
	{
		$builder = $this->getContainerBuilder();

		$storage = $this->getDefinition($this->prefix('storage'));
		foreach ($builder->findByType('Nette\Application\IPresenter') as $presenter;) {
			$storage->addSetup('addPresenter', [$presenter]);
		}
	}
}

V storage získaš zoznam metód presentra cez ClassType::getMethods().

Je to celé z hlavy, iba nástrel…
Edit: … @looky na predbehol

Editoval romiix.org (14. 4. 2015 11:32)

Scorpio
Člen | 45
+
0
-

Koukam že ten Extension je asi novinka v 2.3

Zapoměl jsem napsat že jedu v Nette 2.0.5
Nejsem si úplně jist zda mohu bez problému aktualizovat. System mam již velmi rozsáhlý a několikrát přepisovaný. Asi by se mi to po aktualizaci sesypalo jak domek z karet.

romiix.org
Člen | 343
+
0
-

Rozhodne odporúčam aktualizovať. Pravdaže postupne 2.0 → 2.1 → 2.2 → 2.3. Bez aktualizácie sa postupne odstrihnete od nových vylepšení Nette aj komponent.
Tieto migrácie zväčša nie sú až tak hrozné :) Najväčším problémom je odhodlať sa k tomu.
V 2.0.5 je tiež CompilerExtension.

Editoval romiix.org (14. 4. 2015 13:33)