Diskuze: dynamický formulář, znovupoužitelnost jednoho formuláře, Ajax
Zobrazeno 3 zpráv z 3.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Ahoj, patrně hledáš Nette\Application\UI\Multiplier, viz:
https://doc.nette.org/…4/multiplier
Nakonec jsem tedy použil Multiplier
Celý kod vypadá takto:
public function createComponentEditForm(){
return new Multiplier(function ($itemId) {
$aktivni = $this->cesty->PathActive($itemId)->fetch();
$dodavatele = $this->dodavatel->byPathID($itemId)->fetchPairs('DodavateleID', 'DodavateleNazev');
$aktivniDodavatele = $this->dodavatel->byPathIDActive($itemId)->fetchPairs();
$form = new Form;
$form->setMethod('POST');
$form->getElementPrototype()->class = 'ajax';
$form->addText('naves','Návěs pro cestu:')
->setDefaultValue($aktivni->CestyNaves)
->setHtmlAttribute('placeholder','Návěs');
$form->addCheckbox('RouteActive', 'Aktvní cesta:');
$form->setDefaults(['RouteActive'=>$aktivni->CestyAktivni]);
$form->addCheckboxList('dodavatele', NULL,$dodavatele);
$form->setDefaults(array('dodavatele' => $aktivniDodavatele ));
$form->addHidden('CestaID', $itemId);
$form->addHidden('newDod');
$form->addSubmit('Zmenit','Uložit změny pro routu')
->setHtmlAttribute('class','ajax');
$form->addProtection(); // Ochrana proti Cross-Site Request Forgery
$form->onSuccess[]=[$this,'EditFormSucceeded'];
return $form;
});
}
public function editFormSucceeded($form,$values){
$this->database->query('UPDATE Cesty SET CestyAktivni = ? WHERE CestyID = ?',$values->RouteActive,$values->CestaID);
}
Děkuji za pomoc!
Každopádně nyní řeším problém s tím, že potřebuji ony vytvořené
formuláře odesílat přes Ajax, ale bohužel se nedaří a stránka se stále
refreshuje. Využívám nette.ajax.js A četl jsem že stačí
formuláři nebo jeho submit inputu přidat class "ajax" a že by se to mělo
samo o vše postarat a při odeslání zavolat ublic function
editFormSucceeded($form,$values) avšak stránka se stále
refreshuje :/
Zobrazeno 3 zpráv z 3.