Ajaxovy formular po submite ulzi data do db
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- drick
- Člen | 61
Caute. Chcel by som si vytvorit formular, ktory po kliknuti na submit button Odoslat odosle svoje data do databazy. Nechcem aby sa nic prekreslovalo ani menilo.
Moj formular (send message form):
$form = new Form;
$form->addText('content', 'Správa:')
->setRequired();
$form->addSubmit('send', 'Odoslat');
$form->onSuccess[] = array($this, 'messageSent');
return $form;
Spracovanie formularu
public function messageSent(Form $form, $values) {
try {
if (!$this->presenter->isAjax()) {
$this->redirect('this');
} else {
$this->redrawControl();
$this->messages_model->addMessage($values);
}
} catch (Nette\Database\UniqueConstraintViolationException $e) { }
}
V sablone (mam pripojeny nette.ajax.js):
{snippet}{control sendMessageForm}{/snippet}
<script>
$(document).ready(function(){
$("sendMessageForm").submit(function () {
$(this).ajaxSubmit();
return false;
});
$("sendMessageForm :submit").click(function () {
$(this).ajaxSubmit();
return false;
});
})
</script>
Po kliknut na Odoslat sa stranka redirectne. Viete mi niekto povedat, kde mam chybu – ako to cele spravit ajaxovo, bez redirectu?