jak vypnout Flush vypsaných inputů při přepínání mezi sekcemi formuláře

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

čaute nettíci…
řeším problém:
udělali jsme formulář který se skládá z několika sekcí…co sekce to latte
chtěl bych docílit toho abych mohl přeskakovat mezi sekcemi a při návratu do sekce která už byla vyplněná se mi inputy nevyflushovali. Nyní když vyplním sekci 1 a skočím do sekce 2 poté se vrátím do sekce 1 vše co jsem vypsal je pryč. Je nutné používat na každé z tlačítek submit? Dá se nějak zařídit aby se vyplněný input okamžitě uložil a ta session vydržela i když se přepnu a vrátím zpět?

toto je šablona obsahující buttony s valáním na akce v presenteru:

{extends '../@layout.latte'}

{define #content}

<div id="BodyForm">
    <div id="inBodyForm">

       <div id="buttonsNavigatorSub">
        <a id="navButton-postava" n:href="Registration:personal">1</a>
        <a id="navButton-cena" n:href="Registration:price">2</a>
        <a id="navButton-jazyky" n:href="Registration:languages">3</a>
        <a id="navButton-dostupnost" n:href="Registration:workHours">4</a>
        <a id="navButton-vybaveni" n:href="Registration:facilities">5</a>
        <a id="navButton-praktiky" n:href="Registration:services">6</a>

    </div>

    {include #form}
</div>
    </div>
{/define}

v presenteru:

protected function createComponentWorkHours() {
        $form=new \SexyStrela\Components\Girl\WorkHours;
        return $form;
    }

    protected function createComponentFacilities() {
        $form = new Facilities($this->model->getFacilities());
        return $form;
    }

    protected function createComponentFotos() {
        $form = new \SexyStrela\Components\Girl\Fotos();

        return $form;
    }

    protected function createComponentPersonal() {
        $form = new \SexyStrela\Components\Girl\Personal();

        return $form;
    }

    protected function createComponentPrice() {
        $form = new \SexyStrela\Components\Girl\Price();

        return $form;
    }

    protected function createComponentServices(){
        $form = new \SexyStrela\Components\Girl\Services(
            $this->model->getServices()
        );
        return $form;
    }

    protected function createComponentLanguages(){
        $form = new \SexyStrela\Components\Girl\Languages();
        return $form;
    }

jedna z komponent:

class Personal extends BaseForm {

   public function __construct(){
        parent::__construct();
        $this->setAction('/submit.php');
        $this->setMethod('POST');
        $this->onSuccess[] = callback($this, 'submitted');

        $this->addText("age", "věk");
        $this->addText("height", "výška");
        $this->addText("color1", "barva očí");
        $this->addText("color2", "barva vlasů");
        $this->addText("hair", "délka vlasů");

    }

no a ke každé komponentě je šablona latte pro vykresleni formuláře

Editoval ZAJDAN (3. 4. 2012 19:04)

Ascaria
Člen | 187
+
0
-

V submit metodě si ukládej $form->getValues() do session a při načítání formu kontroluj, jestli něco v session je a pak to použij jako default hodnoty.

22
Člen | 1478
+
0
-

tohle se dá rešit javasriptem přinejhorším, ale domnívam se, že to s Nette nijak nesouvisí.

Tomáš Votruba
Moderator | 1114
+
0
-

K inspiraci: https://forum.nette.org/…ovy-formular („wizzard form“ je to, co hledáš/děláš)