Neescapovat & v url v latte pro e-maily

Phalanx
Člen | 310
+
0
-

Ahoj,

mám stejný problém jako tady kolega: https://forum.nette.org/…tnim-pripade

Posílám e-maily a mám v nich url například ‚https://www.abc.cz/stranka?a=1&b=2‘
tj. v latte: {$url}

Problém je, že se escapuje & za & – čímž se při přejití na tuto adresu parametr b vůbec neuplatní…

Šablonu vytvářím přes:

<?php
$latte = new Engine;
$latte->addProvider('uiPresenter', $this->getPresenter());
UIMacros::install($latte->getCompiler());
$latte->addFilter('translate', [$this->translator, 'translate']);
return $latte->renderToString(self::TEMPLATES_PATH . "{$templateFile}.latte", $params);
?>

Existuje tedy nějaká jiná možnost, než si na to v e-mailu prostě dát pozor a ošetřit tam všechny url?
{$url|noescape}

Díky

Editoval Phalanx (30. 9. 2019 17:20)

CZechBoY
Člen | 3608
+
-3
-

No vzhledem k tomu, že output Latte je vždy HTML tak opravdu neuvažuje jinej kontext než HTML.

Phalanx
Člen | 310
+
+1
-

@CZechBoY To si právě nemyslím – https://latte.nette.org/cs/tags#…

A používám třeba v robots.latte
{contentType text/plain}

Ale přivedl jsi mě asi na správnou stopu – Kontextově sensitivní escapování
https://latte.nette.org/cs/tags#…

Mám totiž txt a html e-mail v jednom lattečku, takže se tam escapuje pro html.

Díky za pomoc :)

Editoval Phalanx (30. 9. 2019 16:28)

CZechBoY
Člen | 3608
+
0
-

OK, to mi ušlo. Škoda že nejde dát minus na vlastní příspěvek :D