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
+
0
-

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?

Unlink
Člen | 298
+
+1
-

Ak máš správne inicializované nette.ajax tak by malo stačiť pridať class ajax tomu formu alebo buttonu.

niečo ako

$form->addSubmit('send', 'Odoslat')->getControlPrototype()->class[] = 'ajax';