Vytvorenie viac formulárov v cykle

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

Ahojte,

v databaze mam tabulku so 4 stlpcami a cca 20 riadkami. Neviem ci sa to ma riesit tak, ale chcem vytvorit pre kazdy riadok samostatny formular, aby som ho mohol potom zvlast editovat podla id riadka.

Tento sposob je asi blbost, tak sa vas pytam co robit … dik za odpovede

<?php
        $wordsH = $this->database->table('words_home');
        foreach($wordsH as $wH){
            $form = new Form;
            $form->addName .....
            $form->addSubmit('send', 'Poslať');

            $form->onSuccess[] = array($this, 'formSucceeded');
            return $form;
        }
?>
David Matějka
Moderator | 6445
+
+3
-
Takeshi
Člen | 596
+
0
-

David Matějka napsal(a):

pouzij multiplier https://doc.nette.org/…n/multiplier

Inak sa vsetko postupuje tak ako pri tovarnickach – inject v presenteroch + to ostatne?

David Matějka
Moderator | 6445
+
+2
-

Ano, vsechno ostatni je stejne – jen tu komponentu obalis do multiplieru a ona se vytvori pro kazdy radek znovu s jinym parametrem (id)

Takeshi
Člen | 596
+
0
-

David Matějka napsal(a):

Ano, vsechno ostatni je stejne – jen tu komponentu obalis do multiplieru a ona se vytvori pro kazdy radek znovu s jinym parametrem (id)

Super, funguje lepsie ako som si myslel :-)

Takeshi
Člen | 596
+
0
-

Este som zabudol na jednu vec … ako dostanem do formulara id riadka databazy?

<?php
        public function create()
        {
            return new Multiplier(function () {
                $form = new Nette\Application\UI\Form;
                $form->addText('sk', 'sk :')
                    ->addRule($form::FILLED);

                $form->addSubmit('send', 'Přidat do košíku');
                $form->onSuccess[] = array($this, 'formSucceeded');
                return $form;
            });
        }
?>
<?php
        {foreach $wordsH as $item}
            <div><b>id:</b>{$item->id}</div>
            <div><b>name :</b>{$item->name}</div>

            {control wordshForm-$item->id}
        {/foreach}
?>

… toto mi to vypise len do sablony

CZechBoY
Člen | 3608
+
0
-

Vyžádáš v parametru funkce multiplieru. Proč si nečetl ten návod, co poslal @DavidMatějka? Však dole je to ukázaný.

public function create()
        {
            return new Multiplier(function ($id) {
                $form = new Nette\Application\UI\Form;
                $form->addText('sk', 'sk :')
                    ->addRule($form::FILLED);
				$form->addHidden('id', $id);

                $form->addSubmit('send', 'Přidat do košíku');
                $form->onSuccess[] = array($this, 'formSucceeded');
                return $form;
            });
        }

Šablonu máš dobře, akorát to pls příště obal na foru do /--latte {foreach ...} \--

Takeshi
Člen | 596
+
0
-

CZechBoY napsal(a):

Vyžádáš v parametru funkce multiplieru. Proč si nečetl ten návod, co poslal @DavidMatějka? Však dole je to ukázaný.

Prepac :-) … cital som to, ale nepochopil som ako to pracuje … som si myslel ze to je id formulara … ale nie ze to id formulara je zaroven id riadka z databazy … mea culpa :-)

Editoval Takeshi (5. 3. 2016 2:17)

CZechBoY
Člen | 3608
+
0
-

A uz ti to jede?
Kdyz na to koukam tak ten Multiplier davam vetsinou do presenteru a ne do tovarnicky. V tovarnicce udelam vzdy jen jeden formular.

Takeshi
Člen | 596
+
0
-

Ano, už mi to ide. Skúšobne som to dal tak, že vypisuje formulár na každý riadok a po odoslaní formulára povedzme pre druhy riadok udajov sa zmenia údaje len v tom riadku … takže by to malo frčať