Vložení vlastní třídy do Nette

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

Zdravím, chci se optat jak nejlepe vlozit vlastni tridu, ktera ma staticke metody, abych je mohl volat v Nette?

Jde mi o to, že mám formulář a potřebal bych si udělat vlastní validační pravidla v Nette. V presenteru, kdy volám fci na zpracování formuláře tak bych si chtěl dát podmínku, třeba:

if(mYClass::IsValid()){…}

Jaké je nejlepší či nejefiktivnější řešení?

Moc díky Petr

Bertram
Člen | 75
+
0
-

Ahoj,
o načítání tříd se stará Nette\Loaders\RobotLoader, takže pokud používáš sandbox, tak stačí umístit
své třídy někde ve složkách app nebo libs a tvé třídy se budou načítat automaticky.

A co se validace formuláře týče, využil bych metodu addRule() přímo na formulářový prvek, které předáš callback pro zavolání vlastního validačního pravidla.

Jan Endel
Člen | 1016
+
0
-

vlastní třídy umistuju do projektu podle účelu, validátory k formulářům, obecné třídy do libs/shared/mojeTrida.php jinač o umístění se nemusíš starat, robotLoader si je už najde a zavolá nad nimi require až bude třeba :-).

Jan Endel
Člen | 1016
+
0
-

Pokud máš správně nastavený robotLoader měl by ti správně requireovat tu třídu, kterou potřebuješ a nemělo by dojít k problému. Nebo už k nějakému došlo?

redhead
Člen | 1313
+
0
-

Proč by mělo? Dyť tu třídu nikde nevyužíváš.

Jan Voráček
Člen | 90
+
0
-

Pokud chceš použít vlastní Control, nezbude ti i než použít vlastní Presenter implementující rozhraní Nette\Application\IPresenter, z kterého teprve budou dědit tvoje FooPresentery.

Můžu se jenom zeptat, proč to proboha chceš dělat? Pokud chceš mít proměnnou $themePath dostupnou ve všech presenterech, pak použij standardní řešení s BasePresenterem. Pokud ji potřebuješ mít v komponentách, tak si ji do nich z presenteru třeba předej.

Editoval Jan Voráček (1. 10. 2011 15:53)