Kdy nejpozději sestavit formulář?

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

Mám formulář v samostatné třídě a z určitých důvodů jej nechci sestavovat už v constructoru. Kdy jej mohu sestavit, když sestavování až v render metodě je pozdě?

Potřeboval bych takovýto životní cyklus:

  • __construct()
  • inject* metody
  • sestavení formuláře, asi metoda construct()
  • attached() – klidně může nastat i dřív
  • render() – ten mám rozdělený na víc částí, ale v předkovi je to prostě render($params)

Editoval Šaman (14. 6. 2013 8:18)

peter.z
Člen | 37
+
0
-

A co v loadState?

llook
Člen | 407
+
0
-

Podle mě ho můžeš sestavit v attached.

Šaman
Člen | 2666
+
0
-

peter.z napsal(a):

A co v loadState?

Formulář není PresenterComponent, tak metodu loadState ani nemá. Jinak tuším, že ta se volá jen při zpracování signálu, ale možná se pletu.

llook napsal(a):

Podle mě ho můžeš sestavit v attached.

Doufám, že ano, ale raději se ptám.

Editoval Šaman (14. 6. 2013 8:31)

Felix
Nette Core | 1245
+
0
-

Mam metodu build(), kterou volam v attached. Nekdy je s tim, ale problem. Jinak se mi taky nelibilo sestavovat to v konstruktoru, predpokladam ze mas podedeny UI/Form, zj?

Michal Vyšinský
Člen | 608
+
0
-

Felix +1, přesně takto to mám taky. Ještě jsem se s žádnými problémy nesetkal

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Eh… doporučuji nedědit UI\Form. Ale dědit UI\Control, a formulář definovat v klasické továrničce. Takový formulář je pak stále zapouzdřený jako samostatná třída, ale:

  • může mít vlastní šablonu (kterou už je UI\Control automatický vybavený)
  • ve které budou fungovat snippety (UI\Form nemá invalidateControl metody)
  • není třeba se trápit, kam definici sestavení umístit :)