Příkaz include přes renderToString
- Daewoo
- Člen | 36
Ahoj,
chci používat příkaz include v latte šabloně (viz dole) načítané z databáze do renderToString. Bohužel metoda jen odstraní uvozovky a hranaté závorky, obsah nevloží. Získaný text pak vkládám do default.latte skrz {$text|noescape}, ale to jen pro úplnost. V includované šabloně box-contact je teď jen html text, nic složitého.
<?php
PagePresenter:renderDefault
...
$latte = new \Latte\Engine;
$latte->setLoader(new \Latte\Loaders\StringLoader());
$text = $latte->renderToString(str_replace(""", '"', $page->text));
// zde v $text je to uz blbe viz dole
...
?>
Šablona ($page->text):
<p>bla bla...</p>
{include "../components/box-contact.latte"}
<p>bla bla...</p>
Získaný výstup:
<p>bla bla...</p>
../components/box-contact.latte
<p>bla bla...</p>
Požadovaný výstup:
<p>bla bla...</p>
<p>Obsah souboru box-contact.latte</p>
<p>bla bla...</p>
Co dělám špatně?
- janpecha
- Backer | 75
StringLoader nepracuje se soubory na disku, ale se „soubory v paměti“. Názvy souborů (šablon) a jejich obsah můžeš předat v konstruktoru https://api.nette.org/…der.php.html#…
EDIT: případně si můžeš vytvořit vlastní loader, který bude includovat soubory z disku
Editoval janpecha (20. 11. 2016 17:49)