„zapouzdreny“ formular pomoci addContainer

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Vitek Jezek
hledá kolegy | 285
+
0
-

hodilo by se mi (predevsim do slozitejsich aplikaci/modelu), kdyby bylo jedno, zda zavolam $form->onSubmit[] (popr. $form->getValues() etc…), nebo $container->onSubmit[] (kde $container=$form->addContainer(‚neco‘) )

co vam? : )

David Grudl
Nette Core | 8218
+
0
-

Lze použít $container->form->onSubmit[]

Vitek Jezek
hledá kolegy | 285
+
0
-

OOOH! SLINT! Tak to ti dluzim dalsi pivo!

Edit: Eh, pise me to „Cannot read an undeclared property FormContainer::$form.“ i kdyz jsem na nove revizi : (

Editoval Whitek (19. 4. 2009 23:41)

romansklenar
Člen | 655
+
0
-

Aby šlo volat $container->form->onSubmit[] tak musíš ten formulář do toho containeru nejdříve přidat, nějak takto asi:

$container->addComponent($form, $form->getName());

Ale to je asi něco jiného než jsi chtěl ne? Navíc by to vyhodilo chybu (nested form), pokud by ten $container vznikl jak píšeš: $container = $form->addContainer('neco').

Vitek Jezek
hledá kolegy | 285
+
0
-

no moje prvotni idea byla, ze nekde v zanorenych funkcich nahlizim na formular stale stejne (tj davam do nej dalsi polozky, davam na nem setDefaults(), pripojuju k nemu dalsi funkce etc etc…) a on by mel byt odstinen od okoli. Tj melo by mu byt jedno, zda ho nekdo zavola s $form; s $form->addContainer(‚foo‘) ci dokonce s $form->addContainer(‚foo‘)->addContainer(‚foofoo‘);

David Grudl
Nette Core | 8218
+
0
-

Whitek napsal(a):

OOOH! SLINT! Tak to ti dluzim dalsi pivo!

Edit: Eh, pise me to „Cannot read an undeclared property FormContainer::$form.“ i kdyz jsem na nove revizi : (

Fakt že jo, doplním to.

Vitek Jezek
hledá kolegy | 285
+
0
-

super, zkontroloval jsem a funguje.
Jen si rikam (uz jsme se na tom bavili na posledni brnenske sobote, ale uplne si nepamatuju, kam jsme dosli : ), zda nejit v abstrakci jeste dal; tj. udelat to tak, ze ti bude jedno, zda pouzivas objekt $form a nebo objekt $container ($form->addContainer(„foo“)).

To by se me hrozne moc hodilo a libilo! : ) Krasne by se to pak pluginovalo do sebe (nemusel bych hlidat, zda jsem na koreni (mam $form) nebo zda jsem v $container(popr. jak moc zanorenej do nich).

Predevsim jde o to, aby slo $container->setDefaults(array(„prvek“=>„data“)) misto $container->form->setDefault(array(„foo“=>array(„prvek“=>„data“))), protoze nevim jednoduse, jak moc je muj Container zanoreny.
Take by bylo cool, kdyby $container->onSubmit[] vracel handleru POUZE data zevnitr containeru.

Co myslite?

nAS
Člen | 277
+
0
-

A nestačí ti zavolat:

$obj->getForm()->cokoliv();

To by mělo fungovat stejně na Formu, na FormContaineru a i na FormControlu.

Vitek Jezek
hledá kolegy | 285
+
0
-

nestaci, ty bys pote musel vedet, jak hluboko jsi: napr. pro set default je rozdil, zda pouzivas $form->addContainer(‚foo‘) ci $form->addContainer(‚foo‘)->addContainer(‚bar‘).

nAS
Člen | 277
+
0
-

Aha, už jsem to pochopil. To vypadá jako dobrý nápad.

Vitek Jezek
hledá kolegy | 285
+
0
-

Davide? Pokud si vzpominas na predminulou Posledni sobotu, tak jsem ti to mel pripomenout. Tak tedy cinim.

//povsimenete si dosavadni pravidelnosti tohoto topicu : D

David Grudl
Nette Core | 8218
+
0
-

jj, víme o tom ;)

David Grudl
Nette Core | 8218
+
0
-

V aktuální verzi už FormContainer přebral velkou část odpovědnosti Form, viz https://forum.nette.org/…te-formularu.

S tím onSubmit je to na delší úvahu, takže zatím podporován není.