Překlad LATTE makra v proměnné

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Stejsi
Člen | 21
+
0
-

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)

matopeto
Člen | 395
+
0
-

Je to spravne spravanie, latte ulozene v premennych v template sa nevykonava.

Preco to nemozes robit as v sablone?

Editoval matopeto (21. 6. 2017 18:12)

Stejsi
Člen | 21
+
0
-

matopeto napsal(a):
Je to spravne spravanie, latte ulozene v premennych v template sa nevykonava.
Preco to nemozes robit as v sablone?

Napadlo mě to dávat do článků v tinyMce aby fungovaly odkazy vždy. I když se změní doména webu a data v článcích zůstanou stejná.

Myiyk
Člen | 321
+
0
-

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
+
0
-

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
+
+3
-

pouzivat latte na obsah clanku je VELMI nebezpecne. v latte muzes provest jakykoliv php kod. pouzij obycejne str_replace pro nahrazeni placeholderu