Vlastní makro – vkládání proměnné přes argument

před 10 měsíci

martin21000
Člen | 2
+
0
-

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.

před 10 měsíci

David Matějka
Moderator | 5897
+
+1
-

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.