Vlastní makro – vkládání proměnné přes argument
- martin21000
- Člen | 2
Ahoj,
potřeboval bych vytvořit vlastní Latte makro pro vykreslování obrázků.
Syntaxe by měla být zhruba následující:
{img gallery='photoalbum' file=$image->getFileName()}
Kde atributem gallery určuji složku, ze které se budou obrázky čerpat a file pak obsahuje název obrázku.
Argumenty si zatím ukládám jenom do pole, viz:
public function img(MacroNode $node, PhpWriter $writer) {
$args = $this->formatArgsToArray($node->args);
return $writer->write('echo %node.args');
}
private function formatArgsToArray($args) {
$arr = array();
$args = explode(" ", $args);
foreach ($args as $arg) {
$arr[] = $arg;
}
return $arr;
}
Jenže narazil jsem na zádrhel. Zjistil jsem, že v argumentu file, kde bych očekával název souboru vrácený metodou getFilename(), je pouze řetězec, který jsem vložil do toho argumentu, tedy:
$image->getFileName()
Znáte způsob, jak do argumentu makra dostat proměnnou ze šablony?
Budu vděčný za jakoukoliv radu.
- David Matějka
- Moderator | 6445
ahoj, to, ze se preda $image->getFileName()
a nikoliv
hodnota, je ocekavane chovani. k zavolani makra dochazi pouze pri kompilaci
sablony a nejsou tedy zname runtime hodnoty. ukolem makra je vytvorit php kod,
ktery se pak v runtime provede.