viac renderov komponenty / ako riesit edit komentaru

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

dobre ranko prajem,

mam komponentu, ktora vykresluje komentare. potreboval by som v ramci tejto metody vykreslit editacny formular na upravu komentaru.
bohuzial nedokazem sa v komponente odkazat na iny render (zeby komponenta mohla mat iba jeden)??

viete mi prosim poradit, akym sposobom to riesit. dakujem js

Tomáš Votruba
Moderator | 1114
+
0
-

Dobré ranko, viz vykreslování komponent.

japlavaren
Člen | 404
+
0
-

dakujem, dokazem ale z komponenty volat link na iny render? pretoze link vytvara stale handle odkaz

japlavaren
Člen | 404
+
0
-

hladal som v api bohuzial nedokazem zistit ci sa da odkazovat v sablone na iny render. vie niekto poradit??

David Matějka
Moderator | 6445
+
0
-

z sablony se vzdycky (tedy pokud to neurcis pomoci {control foo:bar}) vola pouze render metoda. logiku v komponente si musis tedy vytvorit sam, treba takhle:

class MyControlWithView extends Control
{
	/** @var string @persistent */
	public $view;

	public function render()
	{
		if($this->view) {
			$method = 'render' . $this->view;
			$this->$method();
		} else {
			....
		}
	}

	public function renderFoo()
	{
		....
	}
}

odkazes pak na jinej view, ktery zavola jinou render metodu

japlavaren
Člen | 404
+
0
-

todo som sa obaval… je na to nejake odvovodnenie? resp. preco sa komponenty spravaju inak ako presentery (tj. musim si tieto riesit sam)

Šaman
Člen | 2666
+
0
-

Asi nechápu dotaz. Pokud chceš vykreslit komponentu Foo pomocí metody renderBar, tak použij zápis {control foo:bar}, jak už psal @matej21. V čem je problém? Z komponenty přece neděláš odkazy na jiný pohled téže komponenty. Zatímco presenter má životní cyklus, tak komponenta se prostě zobrazí.

japlavaren
Člen | 404
+
0
-

ja by som prave potreboval v komponente odkazovat na iny pohled:

mam komponentu, ktora vykresluje komentare. ked otvorim upravit komentar zobrazi sa novy render, ktory vykresli formular na upravu komponenty. aspon tak by som to riesil ja. je tospravne, alebo robim chybu

js

Oli
Člen | 1215
+
0
-

Ještě to můžeš řešit takhle:

public function render() {
	if (true)
	{
	    $this->template->setFile(__DIR__ . '/templateTrue.latte');
	} else
	{
	    $this->template->setFile(__DIR__ . '/templateFalse.latte');
	}
}
David Matějka
Moderator | 6445
+
0
-

spatne pouziti komponent to neni, jen to budes mit komplikovanejsi. komponenty nejsou tak slozite jako presentery (nemaji tak dlouhy zivotni cyklus, nemaji akce, pohledy..), takze ruzne view-y atd si budes muset vyresit rucne.

Editoval matej21 (18. 2. 2014 21:05)

japlavaren
Člen | 404
+
0
-

ok, sprvim si rozne template ktore budem prepinat podla podmienok

dakujem