Poslání komponenty přes payload

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

Zdravím,
mám drobný problém – potřeboval bych v akci presenteru vyrenderovat komponentu (i s je jí šablonou, se vším všudy, co je v té komponentě) a odeslat ji přes payload v ručně vytvořeném snippetu.

Zkoušel jsem něco jako toto:

$template = new \nazevKomponenty;
$render = $template->render($parametr1,$parametr2);
$this->payload->snippets["snippet--komponenta"] = $render->__toString();
$this->sendPayload();

V komponentě přistupuju k modelu přes getPresenter()->getModel(„nejakyModel“) a při tomto kodu mi to vyhodí chybu „Component '' is not attached to ‚Nette\Application\UI\Presenter‘“.
Když volám tuto komponentu v šabloně přes {control komponenta $promenna1,$promenna2}, tak to komponentu vykreslí v pořádku.

Existuje ale nějaký způsob, jak vyrenderovat komponentu do proměnné a její obsah vrátit v payload?
Díky za pomoc…

Aurielle
Člen | 1281
+
0
-

Brání ti něco připojit ji do stromu komponent, nebo, ještě lepší řešení, ji mít přímo jako komponentu, potom na ní zavolat render()?

darkwind
Člen | 32
+
0
-

Osobne jsem myslel, ze presne to delam – ona je to komponenta a ja na ni volam render. Nebo jak to myslis?

enumag
Člen | 2118
+
0
-
  1. Komponenta není šablona.
  2. Komponenta se vytváří pomocí továrničky, ne takhle.
  3. Ta metoda render se nevolá přímo ale přes makro {control …}
darkwind
Člen | 32
+
0
-

Aha, ono je mozna trochu matuoci to pojmenovani promenne jako $template…

A ja vim, ze se komponenta renderuje pomoci makra {control nazevKomponenty…}, ale to se dela az v sablone… Ja bych tu komponentu potreboval vyrenderovat uz v presenteru a jeji vyrenderovany kod poslat pres payload do stranky… Snad je to srozumitelny

Jendaaa
Člen | 21
+
0
-

Kde tu komponentu vytváříš? Ten výstřižek kódu je dost stručnej…máš to v presenteru v metodě createComponentKomponenta() ?

Editoval Jendaaa (7. 1. 2013 9:37)

darkwind
Člen | 32
+
0
-

je nutné tam mít to createComponentKomponenta()? Myslel jsem, že tu komponentu volám hned v tom prvním řádku té ukázky.
Ono ji to i zavolá, ale při provádění to vyhodí to chybu:

Component '' is not attached to 'Nette\Application\UI\Presenter'.

enumag
Člen | 2118
+
0
-

Pokud komponentu vytváříš pomocí továrny tak při použití $this[‚nazevKomponenty‘] už si můžeš být jistý, že je k presenteru připojená.