Parametrové pole linku v curlyBrackets
- Jod
- Člen | 701
Robí mi to niečo takéto:
Pri linku:
{plink default, array(‚param‘ ⇒ 1}
V tempe všetko ok:
<?php echo $template->{$_cb->escape}($presenter->link("$destination", array('param' => 1))) ?>
Ale keď je v premennej pole:
// $arr = array('param' => 1)
{plink default, $arr}
V tempe mi to už dáva tak ako by som nechcel:
<?php echo $template->{$_cb->escape}($presenter->link("$destination", array($arr))) ?>
Myslím, že to sem už aj niekto písal. Nedala by sa pridať podmienka, že ak je parameter pole tak ho nedá do array, alebo to naruší nejaký zámer, napr. odosielanie poli ako parameter?
Ale neumrem ak to nepôjde, zatiaľ sa to dá poriešiť cez {$presenter->link($destination, $arr)}.
- kravčo
- Člen | 721
Jod napsal(a):
Robí mi to niečo takéto:
Pri linku:
{plink default, array(‚param‘ ⇒ 1}V tempe všetko ok:
<?php echo $template->{$_cb->escape}($presenter->link(„$destination“, array(‚param‘ ⇒ 1))) ?>Ale keď je v premennej pole:
// $arr = array(‚param‘ ⇒ 1)
{plink default, $arr}V tempe mi to už dáva tak ako by som nechcel:
<?php echo $template->{$_cb->escape}($presenter->link(„$destination“, array($arr))) ?>Myslím, že to sem už aj niekto písal. Nedala by sa pridať podmienka, že ak je parameter pole tak ho nedá do array, alebo to naruší nejaký zámer, napr. odosielanie poli ako parameter?
Toto sa na úrovni curlybrackets nedá urobiť, keďže v momente prekladania šablóny hodnoty premenných nie sú známe, známe sú až pri vykonávaní preloženej šablóny…
Ale neumrem ak to nepôjde, zatiaľ sa to dá poriešiť cez {$presenter->link($destination, $arr)}.
- David Grudl
- Nette Core | 8218
mělo by fungovat {plink default, array() + $arr}
, ale je to
divné. V Ruby lze psát např method(1, 2, *['a', 'b'])
, možná
by se podobně dalo povolit {plink default, *$arr}
.
- David Grudl
- Nette Core | 8218
Upravil jsem chování filtru, takže je možné používat
{plink default, $arr}
. Vedlejším efektem ale je, že nebude
fungovat {plink default, array('param' ⇒ 1)}
, bude potřeba psát
pouze {plink default, 'param' ⇒ 1}
. Filtr na to upozorní
varováním.
- _Martin_
- Generous Backer | 679
Ahoj, nevím, zda je chyba u mě nebo se něco pochroumalo v Nette, ale v nejnovější revizi (464) je tento bug zase. Nevím, kdy přesně se objevil. Ukázkový kód:
// presenter
$pages[] = (object) array(
'name' => $this->page->name,
'destination' => ':' . $this->name . ':' . $this->action,
'args' => array('pageId' => $this->page->id),
);
<!-- šablona -->
<li>{ifCurrent $page->destination $page->args}<strong>{else}<a href="{link $page->destination $page->args}">{/if}{$page->name}{ifCurrent $page->destination $page->args}</strong>{else}</a>{/if}</li>