Vlastne makra – parameter dvojakeho typu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- bazo
- Člen | 620
mam taketo makro
<?php
/**
* {ifEnabled ...}
*/
public function macroIfEnabled(MacroNode $node, PhpWriter $writer)
{
if ($node->data->capture = ($node->args === '')) {
return 'ob_start()';
}
if ($node->prefix === $node::PREFIX_TAG) {
return $writer->write($node->htmlNode->closing ? 'if (array_pop($_l->ifs)) {' : 'if ($_l->ifs[] = (%node.args)) {');
}
return $writer->write('if ($template->enabled(%node.word, %node.array?)) {');
}
?>
pouziva sa asi takto
<?php
<span n:ifEnabled="invoice.labels.supplier country => 'SK'">
?>
co pekne vygeneruje
<?php
if ($template->enabled('invoice.labels.client', array('country' => 'SK')
?>
chcel by som pridat podporu arrayov ako argument makra, priklad
<?php
{var $context = ['country' => 'SK']}
<span n:ifEnabled="invoice.labels.supplier $context">
?>
toto samozrejme vygeneruje zly kod
<?php
if ($template->enabled('invoice.labels.client', array(array('country' => 'SK'))
?>
ako upravit tento riadok, aby fungovali oba typy zapisu?
<?php
return $writer->write('if ($template->enabled(%node.word, %node.array?)) {');
?>
- bazo
- Člen | 620
@greeny: funkcia enabled nie je sucast rozsirenia. to len integruje druhu kniznicu, pride mi to nespravne davat tuto logiku to enabled() kedze aj pole ako hodnota moze byt spravny argument
@oli expand ani nepoznam, asi by to pomohlo, ale chcem to vyriesit na urovni makra
len tie makro magic funkcie nie su nikde zdokumentovane