Castecne zAJAXovani formulare a pouziti snipettu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Blujacker
Člen | 89
+
0
-

Ahoj,

snazim se udelat formular a trochu ho z AJAXovat. Nejprve bude vykreslen klasicky formular s tlacitkem Preview. Po kliknuti na toto tlacitko se formular ajaxove submitne a zpracuje. Zpracovane hodnoty se zobrazi do puvodni stranky do nejakeho divu + se vykresli klasicke submit tlacitko ktere form submitne bez AJAXu (ve vysledku planuju, ze se preview formulare i klasicke submit tlacitko vykresli do modalniho okna).

Pokusil jsem se na to jit nasledovne. Sablona:

{form myForm class => 'ajax'}
{label remark}{/label}{input remark}
{input preview}

{snippet preview}
{if $renderSnippet}
{* display submitted form details and then display submit button that will submit the form (not using ajax) *}
{input submit}
{/if}
{/snippet}

A v presenteru:

public function renderDefault(){
    if ($this->isAjax()){
        return;
    }
    $this->template->renderSnippet = FALSE;
}

protected function createComponentMyForm(){
    $form = new Form();
    $form->addText("remark", "Remark");
    $form->addSubmit("preview", "Preview")->onClick[] = $this->formPreview;

    $form->addSubmit("submit", "Save")->onClick[] = $this->formSave;
    return $form;
}

public function formSave($form, $values){
    dump($values);
    //save & redirect
}

public function formPreview($button){
    $values = $button->getForm()->getValues(TRUE);
    $this->template->renderSnippet = TRUE;
    $this->template->data = $values["remark"];
    $this->redrawControl("preview");
}

Tento kod je bohuzel naprosto nefunkcni. Latte ve snippetu nezna formular takze nezvladne zobrazit submit tlacitko. Nette.ajax.js includuji, tlacitko Preview vola funkci formPreview spravne ajaxove, ale tim to bohuzel konci.

Mohli byste me prosim nakopnout spravnym smerem, jak bych mohl dosahnout spravneho vysledku?

Dekuji!