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.