predanie parametra do komponenty

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

Zdravim Vas,

potrebujem pomoc a to s predanim paramera $langid komponente definovanej v presentery:

Template:

{control pagesDatagrid $langid}

Presenter:

	public function createComponentPostsDatagrid($langid) {
    $datagrid = new Grids\PostsDatagrid($this, $this->cms, $this->lang, $langid);
    return $datagrid->get();
}

Jedine co potrebujem je to aby som parameter $langid predal komponente pagesDatagrid a nasledne s nim dalej pracoval.

Dakujem za kazdu radu.

David Matějka
Moderator | 6445
+
0
-

Ahoj, pomuze, kdyz napises, co ti nefunguje, nebo co ti to pise za chybu. Ale pokud predavas nejakou hodnotu primo v tovarnice, je zbytecne ji predavat i v sablone.


Ale nemysli si, ze pokud napises v parametrech createComponent* metody $langid, tak ze se tam preda. Tahle magie funguje jen u action a render metod :)


(A pokud tu hodnotu predavas az v sablone, nebude to fungovat s ajaxem…)

Editoval matej21 (31. 12. 2014 0:40)

roko146
Člen | 7
+
0
-

Ide o to ,ze vo foreach potrebujem volat komponentu, ktoru mam definovanu v presentery.

{foreach $langs as $langid}
	{control pagesDatagrid $langid}
{/foreach}

Nefunguje predanie parametra (resp. neviem najst sposob ako ho predat komponente). To ze tato magia nefunguje som zistil :-D a preto potrebujem nejake riesenie.

S ajaxem som to neskusal. V nette som zaciatocnik.

Zax
Člen | 370
+
0
-

Pokud je $langid číslo nebo alfanumerický text, pak na to jde použít UI\Multiplier

{foreach $langs as $langid}
    {control pagesDatagrid-$langid}
{/foreach}

(pomlčka mezi pagesDatagrid a $langid)

A továrna se přepíše takto:

public function createComponentPostsDatagrid() {
	return new UI\Multiplier(function($langid) {
        $datagrid = new Grids\PostsDatagrid($this, $this->cms, $this->lang, $langid);
        return $datagrid->get();
    });
}

Editoval Zax (31. 12. 2014 8:21)

roko146
Člen | 7
+
0
-

Super, funguje. Vdaka velka.