Include blocku v JS a parametry
- lucass
- Člen | 89
Zdary,
mějme následující:
<script type="text/javascript">
$.each({$array}, function(i, item) {
var detail = $('{include #item, id => "' + item.id + '"|trim|escapeJs}');
});
</script>
dále pak HTML:
{define #item}
<div class="item">
id: {$id}
<a href="{plink Detail:default, id => $id}" class="modal">Zobrazit</a>
</div>
{/define}
Vygenerované HTML je pak:
<div class="item">
id: 1
<a href="/item.detail/default/%27%20%2B%20item.id%20%2B%20%27?lang=cs">Zobrazit</a>
</div>
Tj. v případě výpisu dostanu správné číselné ID, v případě generování odkazu název proměnné v JS.
Buď špatně formátuji ten include v JavaScriptu, nebo se jedná o chybku. Můžete někdo poradit, jestli dělám něco špatně, nebo zda existuje workaround?
Nette Framework 2.0 pro PHP 5.3
Editoval lucass (31. 3. 2012 21:00)
- lucass
- Člen | 89
Lopo: Díky za reakci, ale asi si nerozumíme. Jde o to, že $id se při přímém výpisu jako {$id} vypíše správně, ale v případě generování odkazu tak, jak by uvedeno v parametru pro include blocku, tj. ‚item.id‘.
Tvé doporučení nemá na generování odkazu žádný vliv, tj. {plink Detail:default, id ⇒ $id} generuje stejný chybový odkaz jako tvé tři alternativy.
- nanuqcz
- Člen | 822
Ahoj, ten tvůj
{include #item, id => "' + item.id + '"|trim|escapeJs}
se ti přeloží jako
<?php Nette\Latte\Macros\UIMacros::callBlock($_l, 'item', array('id' => "' + item.id + '") + $template->getParameters()); ?>
V době kompilace .latte
totiž nelze zjistit, co bude
v javascript proměnné item.id
. Takže to, co bys chtěl, ani
fungovat nemůže.
Můžete někdo poradit, jestli dělám něco špatně, nebo zda existuje workaround?
V latte je potřeba použít PHP (latte) proměnnou, místo javascriptové ;-)
- Lopo
- Člen | 277
lucass napsal(a):
Lopo: Díky za reakci, ale asi si nerozumíme. Jde o to, že $id se při přímém výpisu jako {$id} vypíše správně, ale v případě generování odkazu tak, jak by uvedeno v parametru pro include blocku, tj. ‚item.id‘.
Tvé doporučení nemá na generování odkazu žádný vliv, tj. {plink Detail:default, id ⇒ $id} generuje stejný chybový odkaz jako tvé tři alternativy.
a jo … sorac … som bol akuratne vylezeny z pelechu tak som riadne nevidel/nerozmyslal :)
jaky vystup vlastne ocakavas ?
- lucass
- Člen | 89
nanuqcz napsal(a):
V době kompilace
.latte
totiž nelze zjistit, co bude v javascript proměnnéitem.id
. Takže to, co bys chtěl, ani fungovat nemůže.
Díky za reakci. Nicméně jak je tedy možné, že v případě výpisu přes {$id} ve stejném bloku, ve kterém se i generuje ten odkaz, to správné ID z JS proměnné vypíše?
- lucass
- Člen | 89
Lopo napsal(a):
jaky vystup vlastne ocakavas ?
Pokud mi {$id} vypisuje správně např. číslo 1, tak očekávám to samé číslo i při generování odkazu, tj. namísto
<div class="item">
id: 1
<a href="/item.detail/default/%27%20%2B%20item.id%20%2B%20%27?lang=cs">Zobrazit</a>
</div>
toto
<div class="item">
id: 1
<a href="/item.detail/default/1?lang=cs">Zobrazit</a>
</div>