opozdeny ajaxovy formular
- bazo
- Člen | 620
zdravicko,
neviem ci je to vec nette alebo dibi ale pri jednom forme sa mi deje takato
vec:
pri ajaxovom odoslani formu sa mi form vrati vyplneny presne tak ako som ho
vyplnil, co som predtym este nevidel, a polozky v jednom selecte su ako keby
o jednu verziu pozadu. tie polozky sa vyberaju z databazy a odoslanim tohto
formu sa jedna polozka prida medzi tie, ktore sa selektuju do formu. snad je to
jasne.
problem je v tom, ze najprv sa vykonaju vsetky selecty az nakoniec ten
insert.
kod(zjednoduseny):
<?php
public function createComponentFormNewMenuItem()
{
$form = new AppForm();
$form->addText('title', 'Title')->addRule(Form::FILLED);
$items=this->model('menuItems')->getByMenuId($this->menu->id)->fetchPairs('id_level','title');
$form->addSelect('parent_data', 'Parent', $items);
$form->addSubmit('save','Add');
$form->onSubmit[] = array($this, 'formNewMenuItemSubmitted');
return $form;
}
public function formNewMenuItemSubmitted($form)
{
$values = $form->getValues();
$this->model('menuItems')->create($values); //insert do db - prebehne az po invalidacii
$this->invalidateControl('frmNewItem');
}
?>
neviete niekto co s tym?
diky
- lucass
- Člen | 89
Podle mě to souvisí buď s životním cyklem toho formu, nebo s opožděným zápisem do DB, že dříve ta data čteš, než tam jsou fyzicky uložená. Zkusil bych si to asi debugovat na místech, kde se provádí čtení a zápis, abych zjistil pořadí, v jakém to probíhá. Jak ti to funguje bez ajaxu?
- bazo
- Člen | 620
ano je to tym, ze sa najprv precita z db az potom sa vlozi. aj sa to spomina v prvom prispevku.
bez ajaxu to funguje presne rovnako, lenze sa potom presmeruje a tak sa znova nacitava z db a data su aktualne.
vlastne moja otazka od zaciatku mala byt preco sa ten zapis do db vykona az nakonci? a preco sa mi ten form vrati vyplneny tak ako som ho odoslal?