Dynamicky stromovy formular – problem pridanie prvku pomocou Submit
- kubco2
- Člen | 9
Zdravim,
riesim dynamicky formular, ktory by mal byt sebestacny bez JS, riesim to tak, ze mam strom entit a popri prechadzani, vnich naviazem nejake security,cloneable,input atd … potom ich v sablone vykreslujem znovu prechadzanim …
Problem je, ze ked chcem klonovat nejaku vetvu, tak musim odoslat formular,
aby sa nestratili data, ktore som doplnil, takze to riesim specialnym submitom,
ktory nesie informaciu ktora vetva sa ma klonovat, lenze problem je v tom, ze
v hentakom pripade, uz je formular hotovy a cela dynamicka tvorba uz prebehla
bez informacie, ze ma nieco klonovat, pomocou handleAction zase neodosle nove
data.
Skusil som zavolat v akcii na ten submit
$this['newForm']=$this->createComponentNewForm();
ale to pise, ze uz je vytvoreny…
Ked som jedneho casu skusal pridavat uz do hotoveho formularu prvky, tak sa
nepridali…
Skusal som @persistent, ale to sa prejavi az po refreshi, resp na druhy krat, co mi bolo jasne hned, ale aspon som to skusil, mozno by islo redirectnut to nanovo, ale pride mi, ze sa zbytocne bude vsetko robit 2×
Nevie niekto pomoct ako to vyriesit?
Editoval kubco2 (27. 3. 2013 10:15)
- kubco2
- Člen | 9
najprv trochu OT:
chcem sa opytat, kedze mam moznost na CZ fore, preco vzdy na kazdom fore akurat
moje temy su prazdne… Je to tym, ze chcem velmi zlozitu vec? Alebo neviem
pisat zrozumitelne? Alebo si ma vyggoglite ako chuligana ? :D
Prosim Vas, nechcem ostat na internete ignorovany spolocnostou :)
Teraz k teme, nakoniec som sa rozhodol, ze kazdy strom budem nacitavat iba
raz a ulozim do sessions…
A to k tomu formularu, ze nejde pripojit input po vytvoreni:
Netreba zabudat, ze po submite je vytvorena hlavna cast formularu, a treba tam
pridat este metodu ktora dorobi zvysok inputov.
Mne prislo divne, to ze sa to chovalo akoze tam ten input je(lebo som ho na
skusku pridal priamo v render metode) aj sa ukladalo v policku medzi submitmi,
ale nebol v dump-e z form->values, pretoze ten prvok sa nestihol vytvorit,
a tym padom ani ziadny error.
Editoval kubco2 (28. 3. 2013 10:34)
- castamir
- Člen | 629
Možná by bylo příště vhodné sem přidat nějaký kód.
Jestli jsem to pochopil správně, tak máš nějaké submit buttony, které ti mají dělat nějakou logiku, ale hodnoty zpracovávat ještě nechceš. V takovém případě se to dá řešit následovně:
$form->addSubmit("button", "Caption")->onClick[] = $this->tvujHandler1;
S tím, že si budeš muset navolit vhodná validační pravidla, nebo je
naopak v daném případě ignorovat pomocí
$form['button']->setValidationScope(FALSE)
. Zároveň, pokud
máš formulář nastaven onSuccess[], tak se automaticky provede i ten.
Řešením je přidat do jeho metody podmínku na tlačítko, které formulář
odeslalo.
if ($form['save']->isSubmittedBy()) ...
- kubco2
- Člen | 9
vdaka za info,
pouzivam teda sessions, ale nechapem jej spravanie nette 2.1dev:
private function getSession()
{
return $this->presenter->getSession();
}
private function getStructure()
{
$section = $this->getSession()->getSection("component.editableTree.".$this->getName().".".$this->object->getId());
$section['treeParts']; ----------------- bez tohto mi vobec nenacita DATA v sekcii, mohlo by tam byt aj nieco ine napr $section[1]=1 alebo podobne, ako keby sa sekcia potrebovala inicializovat, aj ked v tom IF nieco take je ... neviem :/
if( $section['treeParts']==null ) {
$values=$this->object->getValuesTree();
$section['treeParts']=$this->loadStructure($values);
}
return $section['treeParts'];
}
edit:
tak som skusil prehodit nette 2.0.10
ale rovnaky problem
skusil som to aj pozmenit:
//$section['treeParts']; ------------ proste bez tohto riadku sa vobec neinicializuje DATA cast sekcie
$saved = $section['treeParts'];
//if( $section['treeParts']==null ) {
if( empty($saved) ) {
$values=$this->object->getValuesTree();
$section['treeParts']=$this->loadStructure($values);
}
Editoval kubco2 (28. 3. 2013 16:49)