Proč se po odeslání formuláře volají render a createComponent opačně

Roman Halaxa
Člen | 60
+
0
-

Zdravím,

Píšu do začátečníku protože se teď se zase jako začátečník cítím a zabil jsem s tím dopoledne :D

Mám formulář který potřebuje idéčko záznamu. Předával jsem si ho v renderDefault metodě. Jenže když jsem formulář odesílal, v on success už bylo id null. Šťoural jsem do toho a zjistil jsem že když přijdu na formulář poprvé tak id k dispozici je ale jakmile ho odešlu tak se volání createComponent a renderDefault prohodí a tudíž už v create component id neni.

Vyřešil jsem to tak že jsem místo v renderDefault předal id v actionDefault ale ze zvědavosti mě zajímá proč tomu tak je :D děkuji

jiri.pudil
Nette Blogger | 1028
+
+5
-

Vyřešil jsem to tak že jsem místo v renderDefault předal id v actionDefault

To je ideálka :)

ale ze zvědavosti mě zajímá proč tomu tak je

Vytváření komponent je lazy, příslušná createComponent() se volá až tehdy, kdy je potřeba si na komponentu sáhnout. To nastává často až v šabloně, když se komponenta vykresluje, ovšem při odeslání formuláře je nutné vytvořit komponentu a s ní i definici formuláře už ve fázi zpracování signálů (protože odeslání formuláře je interně signál), tedy před renderem.

Editoval jiri.pudil (26. 10. 2020 13:36)

Roman Halaxa
Člen | 60
+
0
-

jiri.pudil napsal(a):

Vyřešil jsem to tak že jsem místo v renderDefault předal id v actionDefault

To je ideálka :)

ale ze zvědavosti mě zajímá proč tomu tak je

Vytváření komponent je lazy, příslušná createComponent() se volá až tehdy, kdy je potřeba si na komponentu sáhnout. To nastává často až v šabloně, když se komponenta vykresluje, ovšem při odeslání formuláře je nutné vytvořit komponentu a s ní i definici formuláře už ve fázi zpracování signálů (protože odeslání formuláře je interně signál), tedy před renderem.

Díky moc, teď je mi to jasné.