Problém DependentSelectbox – nechtěný submit
- Jack06
- Člen | 168
Zdravím, na úplný konec se mi podařilo rozchodit nějakým způsobem.
Rendruji si formulář sám, tudíž jsem si tam submit button vložil
ručně.
Můj problém jest v tom, že ve formuláři mám x prvků a při každé
změně selectboxu se mi validuje formulář a hlásí mi, kde co nemám
vyplněné a koneckonců, pokud doplním vše, tak se mi odesílá, což je
nesmysl.
Při změně selectboxu se mi odešle formulář a vyhodí to samo sebou
exception Page not found. Missing template ...... add.latte, kde add je callback
při konečném odeslání formuláře.
Nevím, zda jsem někde něco zapoměl nebo či co a proč, ale radši sem
hodím náhledy..
presenter: http://pastebin.com/z7ixKHVG
část formu: http://pastebin.com/RUiJQnhY
část template: http://pastebin.com/mZ2TppsH
Díky za help
Editoval Jack06 (21. 9. 2011 11:56)
- JakubJarabica
- Gold Partner | 184
Tvoj problém je, že definuješ pre form onSuccess. Ten sa totiž volá pri každom odoslaní formulára, čo je aj refresh hodnôt. Vypni si JS a uvidíš pri selectboxoch buttony na load – čiže pre zmenu hodnôt sa form submitne(len sa volá handler dependentselectboxu na naplnenie). A zároveň sa volá aj tvoj handler.
Riešenie je $form->onSuccess nahradiť za $form[‚ok‘]->onClick, čím obmedzíš volanie add/edit len kliknutím na submit ‚ok‘, nie vždy.
- Jack06
- Člen | 168
Ok upravil jsem toto:
$this->addSelect('region', NULL, $region)
->setPrompt('-- Region --');
$this->addJsonDependentSelectBox('okres', NULL, $this['region'], callback($this, "getValuesSelectOkres"))
->setPrompt('-- Okres --');
if ($this->presenter->isAjax())
$this["okres"]->addOnSubmitCallback(array($this->presenter, "invalidateControl"), "schoolPlace");
a toto:
public function createComponentAdd($name) {
$form = new TypesForm($this, $name);
$form['send']->onClick[] = array($form, 'add');
}
nicméně mě to při výběru selectu vyhodí js alert, že nemám vyplněný některé z povinných polí a na samostatný ajax požadavek k závisloti selectboxů se nedostane, jo jinak celý form jsem dal do snippetu schoolPlace
// ok, zjistil jsem, že se to dostane k tomu isAjax ve formu, ale ta metoda addOnSubmitCallback nereaguje, nic se neprovede, snippet se nerefreshuje nic, když do toho isAjax dám ručně setItems a invalidateControl, tak to frčí
//tak fajne, další postup, nyní jsem se dostal o kousek dále, nyní mi to hlásí:
Call to undefined method DependentSelectBox\JsonDependentSelectBox::getPresenter(). search►
co to znamená samo sebou vím, ale jaksi se mi nedaří přistoupit k presenteru z dané classy
Editoval Jack06 (21. 9. 2011 15:28)
- Foowie
- Člen | 269
Upraveno v originálním repozitáři. https://github.com/…entSelectBox
POZOR ! Nyní se musí volat
JsonDependentSelectBox::tryJsonResponse($PRESENTER);
Editoval Foowie (21. 9. 2011 20:03)