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';