Překlad LATTE makra v proměnné
- Stejsi
- Člen | 21
Ahoj,
v presenteru mám:
renderDefault(){
$this->template->obsah = "<a href="{$basePath}>";
...
v šabloně default potom
...
{$obsah|noescape}
...
,ale makro $basePath se bohužel nepřeloží. (zobrazí se <a
href=„{$basePath}> a né <a href=“/cesta/k/souboru/">
Nevíte prosím jak na to?
Díky moc.
P.S.
V nette 2.1 stačilo něco jako:
$template = $this->createTemplate('Nette\Templating\Template');
$template->setSource("<a href="{$basePath}>");
$this->template->obsah = $template;
Editoval Stejsi (21. 6. 2017 18:10)
- Myiyk
- Člen | 321
Ono by to šlo udělat přes latte, ale …
Doporučuji použít texy nebo nějaký jiný značkovací jazyk, třeba https://github.com/…ev/parsedown
Uživatelsky přívětivější bude nějaký WYSIWYG editor (např. https://www.tinymce.com/), ale to bývá složitější na nastavení.
Jak dělat odkazy z wysiwyg, aby fungovaly přes router, to teda nevím.
Nikdy jsem to neřešil.
Nemusel jsem řešit přechod na jinou doménu.
Editoval Myiyk (21. 6. 2017 23:05)
- Stejsi
- Člen | 21
Díky všem za odpovědi.
Řešením je:
$params = array('basePath' => $this->getHttpRequest()->getUrl()->basePath);
$latte = new Latte\Engine;
$latte->setLoader(new Latte\Loaders\StringLoader());
$clanekObsah = $latte->renderToString("<a href="{$basePath}>",$params);
$this->template->clanekObsah = $clanekObsah;
Tom
- David Matějka
- Moderator | 6445
pouzivat latte na obsah clanku je VELMI nebezpecne. v latte muzes provest jakykoliv php kod. pouzij obycejne str_replace pro nahrazeni placeholderu