escapovanie v href

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

Dobrý deň,

narazil som na takýto problém.
V šablóne mám časť
<a href=„mailto:?subject={$data->name}&body={$shareEmailBody}“>e-mail</a>

s tým, že shareEmailBody je v php vyplnené ako „nejaky text\n\nodriadkovany text“.

CurlyBracket filter zrejme detekuje contextAttribute a použije sa escapeHtml helper.
Ale správne (podľa https://phpfashion.com/…vni-prirucka) by tam malo byť použité rawurlencode, ktoré v Nette nie je.

Zatiaľ to riešim cez rawurlencode v php a {!$shareEmailBody} v šablóne.

Dá sa to nejako ináč? Plánujete dorobiť do šablón kontext contextLink (napr.)?

Stano.

PetrP
Člen | 587
+
0
-

Zápis kódu v tomto fóru

Ono asi nejde detekovat moc dobře kdy je a kdy není potřeba rawurlencode. Ale rozhodně doporučuju převádět proměnout $shareEmailBody až v šabloně např přidáním vlastního helperu

//v Presenteru
$template->registerHelper('escapeUrl', 'rawurlencode');
//v šabloně
{!$shareEmailBody|escapeUrl}

Jinak pozor na to že asi IE6 má omezení na delku url.

David Grudl
Nette Core | 8082
+
0
-

Možná by nebylo od věci dát do Control výchozí helper escapeUrl, což?

Petr Motejlek
Člen | 293
+
0
-

To asi ne ;). Klidně do toho.

stan
Člen | 5
+
0
-

Zápis kódu v tomto fóru

Toto som hľadal :-) Asi som bol v čase písania príspevku slepý, ale nad textarea pre písanie príspevku som ten odkaz nevidel (pozeral som iba Texy! syntax).

Ono asi nejde detekovat moc dobře kdy je a kdy není potřeba rawurlencode. Ale rozhodně doporučuju převádět proměnout $shareEmailBody až v šabloně např přidáním vlastního helperu

//v Presenteru
$template->registerHelper('escapeUrl', 'rawurlencode');
//v šabloně
{!$shareEmailBody|escapeUrl}

K tomuto som sa nakoniec ešte v ten deň dopracoval aj ja.

Ďakujem za odpovede.