Vlastni makro a zpracování makra
- TheNEoo
- Člen | 75
Ahoj,
snažím se vytvořit makro, které přijme id položky a předá id dál ke
zpracování a následně obdrží výsledek zpracovaný komponentou.
Nejlepší je příklad. Třeba na fotogalerii. Ovšem začneme článkem, který je uložen v DB.
Vytáhneme si článek
$this->repository->getArticle($idArticle);
Tak, teď dostaneme obsah článku, kde se nachází i makro.
Lorem ipsum dolor sit amet consectetuer Aliquam {photo 4} Phasellus habitant sed habitant.
Makro photo obsahuje id fotky, aktuálně 4.
Takže založil jsem nové makro, postupoval jsem tímto způsobem Dokumentace
a zde ovšem
celkově zde končím, protože zde nemohu použít něco jako:
$set->addMacro('photo', function ($node, $writer) {
return $this->image($node->args);
});
private function image($id){
return $this->photo->create($id);
}
Je možné použít tento zápis, nebo musím použit Phpwriter
? Při použití writeru se ovšem nedostanu ke komponentám a tak podobně,
ne ?
Je vůbec toto správné řešení, takto postupovat ?
- David Matějka
- Moderator | 6445
Ahoj,
- makra se nehodí na data uložená v db, ale na latte šablony. pokud bys obsah db nechal vypisovat přes latte, tak tam snadno uděláš bezpečnostní díru
- makra nemohou rovnou vykonávat tu funkcionalitu, ale musejí vygenerovat php kód, který se vloží do zkompilované šablony a vykoná to, takže musíš použít phpwriter (respektive nějak zformátovat php kód)
- dostaneš se tam ke všemu, k čemu se dostaneš v běžném latte souboru. takže si můžeš třeba do šablony poslat jako parametr (nebo přes provider) službu, se kterou bude ten vygenerovaný kód pracovat
- a zpět k tvému problému, nejsnazší je to prohnat přes nějaký replace
- TheNEoo
- Člen | 75
David Matějka napsal(a):
- a zpět k tvému problému, nejsnazší je to prohnat přes nějaký replace
Pokud správně chápu tak nejlépe to proženu v šabloně filtrem a dál spracuju.