Formulář pomocí proměnné- výpis dat

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

Zdravím v prezenteru mám něco jako,

public function renderJmena()
	{
                $selection = $this->db->table('tabulka')->where('jmeno', 'Emil');

                //dump($selection);
                $this->template->selection = $selection;

	}

to funguje.
Pokud ale v komponentách mám

protected function createComponentForm(){
        $form = new \Nette\Application\UI\Form;

        $form->addText('jmeno', 'Jméno:');

        $form->addSubmit('send', 'Search')
                ->setAttribute('class', 'sender');
        $form->onSuccess[]=$this->procesForm;
        return $form;

        }
        public function procesForm($form){
        $selection = $this->table('tabulka')->query('SELECT * FROM tabulka WHERE id=?', 1);
    }

tak u $selection = $this->table(‚tabulka‘) … je něco špatně. Věřím, že pokud bych to nechal v presenteru, tak bych tento problém neměl.

MartinitCZ
Člen | 580
+
0
-

A neměl bys mít u té komponenty $this->db->table('tabulka') místo $this->table('tabulka')?

PS: Popis chyby typu „něco je špatně“ je nic neříkající!

Editoval MartinitCZ (29. 11. 2014 17:29)

Maren
Člen | 23
+
0
-

Dobře tak jinak procesForm jsem poupravil následovně

public function procesForm($form,$values){
        dump ($values);
        $selection = $this->table('tabulka')->where('jmeno', 'Emil');
        $this->template->selection = $selection;

    }

a v souboru templates/homepage/spisControl.latte mám

{block content}
{control vypis}
<h3 class="cente">SPIS</h3>
<ul class="resu" n:foreach ="$selection as $row">
    <li class="numero">{$row->id}</li>
    <li class="next">{$row->mesto}</li>
</ul>

Laděnka vyhodí –Undefined variable: selection–
Poprosil bych o radu, proč je chyba se „selection“. Jestli je potřeba u komponent s těma proměnnýma pracovat jinak než, kdyby to bylo napsáno přímo v „presenteru“. Předem díky.

MartinitCZ
Člen | 580
+
0
-

Protože spisControl.latte patří k presenteru a né k formuláři. Nahrad $this->template->selection tímto $this->presenter->template->selection

Maren
Člen | 23
+
0
-

Yes. Výborně takto je to funkční. Díky moc.