predanie premennej do macra {define}

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

Zdravim Vas, mam jeden problem a to s predanim hodnoty premennej $lang a $code do macra define. Konkretny priklad:

{foreach  $langs as $lang => $code}
    {define cell-lang-$lang}
        {$lang}
    {/define}
{/foreach}

Dostavam chybu Undefined variable: lang

jedna sa o sablonu pre vypis tabulky datagridu. Vedeli by ste mi pomoct, pripadne navrhnut nejake ine riesenie? Vdaka velka.

Editoval roko146 (9. 1. 2015 21:34)

Jan Mikeš
Člen | 771
+
0
-

Tusim ze takto to nefunguje a nemuzes timto zpusobem definovat bloky.

Neni toto to, co potrebujes?

{define #cell-lang}
	{$lang}
{/define}

{foreach $langs as $lang}
	{include #cell-lang, lang=>$lang}
{/foreach}

Editoval Lexi (9. 1. 2015 22:17)

roko146
Člen | 7
+
0
-

Lexi napsal(a):

Tusim ze takto to nefunguje a nemuzes timto zpusobem definovat bloky.

Neni toto to, co potrebujes?

{define #cell-lang}
	{$lang}
{/define}

{foreach $langs as $lang}
	{include #cell-lang, lang=>$lang}
{/foreach}

No ide o to, ze potrebujem dynamicky vytvarat blok define {define cell-lang-$lang}{/define} ako stlpec v tabulke (Nextras\Datagrid) a nasledne do tohto dynamicky vytvoreneho bloku predat premennu $lang. To co si poslal som skusal ale tak ci tak nemozem ziskat tu premennu ->

Undefined variable: lang
Jan Mikeš
Člen | 771
+
0
-

Ano, protoze blok se chova jako function(), nevidi promenne nadefinovane mimo blok, musis je predat tim zpusobem jak jsem psal ja (primo v {include}, jina moznost jak se dostat k promenne v bloku pokud je mi znamo neni.)

David Matějka
Moderator | 6445
+
0
-

Po kratkem nahlednuti do kodu nextras/datagrid myslim, ze by ses k langu mohl dostat nejak takhle:

{$iterator->current()->name}

(+ oriznout lang-)

Jan Tvrdík
Nette guru | 2595
+
0
-

Nebylo by lepší poslat pull request, aby se předávala i proměnná $column?

roko146
Člen | 7
+
0
-

Vyriesil som to jednoducho podla Lexi cez {$iterator->current()->name}. Vdaka.