Jak z šablony zavolat komponentu s parametrem?

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

Ahoj,
v presenteru mám vytvořenou tuto komponentu:

protected function createComponentJidelniListekFormUprav($id_jidelniListek)
{
	$form = new UI\Form;
	$form->addText('nazev', 'Název:');
	$form->addText('popis', 'Popis:');
	$form->addText('cena', 'Cena:');

	$form->addHidden('id_jidelniListek')
		->setDefaultValue($id_jidelniListek);

	$form->addSubmit('ulozit', 'Uložit');
	$form->onSuccess[] = $this->jidelniListekFormUpravSucceeded;
		return $form;
}

A moje otázka zní. Jak ji mohu s šablony zavolat i s parametrem $id_jidelniListek. Volal jsem ji takto {control jidelniListekFormUprav}, ale nepřišel jsem na to jak tam napsat ten parametr.

Díky Dan

Šaman
Člen | 2666
+
0
-

Sem se parametr nepředává. Parametr se dá z šablony předat jen do render metody, což by tobě nestačilo.
Do továrničky se parametr předat nedá, musíš si ho předat přes členskou proměnnou presenteru.

Editoval Šaman (8. 5. 2014 20:16)

kloban
Člen | 123
+
0
-

Takže to musím předělat do render metody? Nebo jak je nejlepší to řešit?

vitkutny
Člen | 73
+
0
-
protected function createComponentJidelniListekFormUprav()
{
    $form = new UI\Form;
    $form->addText('nazev', 'Název:');
    $form->addText('popis', 'Popis:');
    $form->addText('cena', 'Cena:');

    $form->addHidden('id_jidelniListek')
        ->setDefaultValue($this->jidelniListek->id);

    $form->addSubmit('ulozit', 'Uložit');
    $form->onSuccess[] = $this->jidelniListekFormUpravSucceeded;
        return $form;
}

pokud potřebuješ volat z šablony za každou cenu můžeš použít UI\Multiplier

protected function createComponentJidelniListekFormUprav()
{
    return new UI\Multiplier(function($id){
        $form = new UI\Form;
        $form->addText('nazev', 'Název:');
        $form->addText('popis', 'Popis:');
        $form->addText('cena', 'Cena:');

        $form->addHidden('id_jidelniListek')
            ->setDefaultValue($id);

        $form->addSubmit('ulozit', 'Uložit');
        $form->onSuccess[] = $this->jidelniListekFormUpravSucceeded;
        return $form;
    });
}

a v sablone volat

{control jidelniListekFormUprav-1}
{control jidelniListekFormUprav-2}