Jak zapsat @ do sablony pri nacitani z configu?

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

Ahoj vsem,

v config.neon bych rad uvedel par udaju, ktere budou jednotne pro celou prezentaci a mimo jine je jedna z techto polozek i kontaktni email.

Co vsak nedokazu rozseknout je jak zajistit, aby adresa v configu zapsana klasicky

common:
  parameters:
    email: web@example.com

se skrze presenter

// nacitani promennych do sablon specifickych pro tento web
protected function createTemplate($class = NULL)
{
  $tpl = parent::createTemplate($class);

  // data z config.neon
  $tpl->email = str_replace('@', '@', $this->context->params['email']);
  return $tpl;
}

a skrze sablonu

...
{$email}
...

vykreslila pro uzivatele jako web@example.com, ale v kodu bylo uvedeno web& #064;example.com (ta mezera je tam proto, aby to engine fora nezformatoval jako @, jinak tam samozrejme nepatri) → duvod toho vseho je prosty, snaha o minimalizaci spamu.

Diky za tip.

Radek

Editoval ras (16. 6. 2012 9:00)

jtousek
Člen | 951
+
0
-

Napiš si šablonový helper, který se o to postará. Že se e-mail na výstupu zobrazí entitama neni starost presenteru a už vůbec ne configu. Tohle je pouze záležitost šablony, což se v Nette řeší pomocí maker a helperů.

Tomáš Votruba
Moderator | 1114
+
0
-

K inspiraci, helper může vypadat takto či takto

Myslel bych také na to, že ne vždy je třeba vypisovat email jako odkaz, narozdíl od jeho zabezpečení.

ras
Člen | 135
+
0
-

Ja ho nechci vypisovat jako odkaz (to tak zformatoval engine fora ;O)

Ze to neni starost configu, to je mi jasne …

Diky za tipy … s tim se uz nejak poperu.

ras
Člen | 135
+
0
-

… tak se s tim sice peru, ale prohravam na body → porad ve vyslednem kodu dostavam bude vypsane znaky &, #, 0, 6, 4 a ; a nebo @ → ale zapisu v kodu stranky & #064, ktery by se v prohlizeci zobrazil jako @ proste dosahnout nedokazu …

Ano, dokazu si email rozdelit na dve casti, tj. tu pred zavinacem a tu po zavinacu a primo do sablony to pak zapsat jako <pred zavinacem>& #064;<za zavinacem> … ale takto resit bych to nechtel.

Nejde se u nekoho z Vas chvilka a chut pro reseni ?

Dekuji predem velmi.

Radek

PS
Veskere mezery mezi znakem & a #064; jsou umyslne, aby se Vam na vystupu nezobrazoval @ misto tech 6-ti znaku, ktere jsou jeho ekvivalentem .. tj. v realu tam ty mezery samozrejme nemaji co delat

Filip Procházka
Moderator | 4668
+
0
-

Co takhle?

$template->registerHelper('email', function ($email) use ($template) {
	list($name, $domain) = explode('@', $email, 2);
	return $template->escapeHtml($name) . '@' . $template->escapeHtml($domain);
});
{!$email|email}

Editoval HosipLan (18. 6. 2012 20:19)

ras
Člen | 135
+
0
-

Diky za kod … je to v podstate to co jsem zkousel na zaklade odkazu od Schmutzky.

Vysledek, tedy to co je v kodu stranky
pri

{$email}

Email:      web@profi-vtp.cz<br>

→ coz je stav, ktery nechci

a pri

{!$email}
Email:      web&amp;#064;profi-vtp.cz<br>

→ coz browser nevykresli jako „@“

Cely problem je v podstate v tom, ze ten & je potreba NEprepsat na & amp;, protoze pak to bude interpretovano jako @ …

jtousek
Člen | 951
+
0
-

Jestli se nemýlím tak tomu právě zabrání ten vykřičník. Máš někde nějakou chybu, asi v tom helperu voláš $template->escape i na ten řetězec ‚@‘.

ras
Člen | 135
+
0
-

ano, vykricnik by tomu mel zabranit … proto ho tam Hosiplan ma …

pouzil jsem presne to co psal Hosiplan … nicmene, ted mi doslo, ze mam nad tim vsim spusteny jeste druhy helper a sice Texy! … ale i po vypnuti Texy! helperu to stale nedela co ocekavam … ;o(

Filip Procházka
Moderator | 4668
+
0
-

Tak zapni xdebug a zjisti proč.

jtousek
Člen | 951
+
0
-

Osobně bych si spíše prohlédnul zkompilovanou podobu šablony.

bojovyletoun
Člen | 667
+
0
-

hlavně $template->escape nefunguje
Mě funguje tohle (použití {!="tohle@uj.de"|email}`)

$template->registerHelper('email', function ($email) {
		return str_replace('@', '&#X40;', $email);
jtousek
Člen | 951
+
0
-

Není to = zbytečné? Pokud ne, jaký přesně má význam?

bojovyletoun
Člen | 667
+
0
-

Zbytečné je… ale řešil jsem stejnou věc a text se vypisoval, tak jak byl v šabloně a pak už jsem to bez něj nezkoušel.

ras
Člen | 135
+
0
-

$template->escape nefunguje, ale kdyz se to udela pres staticke volani, tak to fungje … ale nic to neresi

Ted uz vim, ze za vsim hledej … ;o) ne zenu, idkyz ;o) … Texy.

Nad celym content blockem sablony mam spusteny helper, ktery pousti Texy a udela to, ze prelozi & na & amp; → a to je duvod, proc mi to cele nefunguje.

Zalozil jsem jine vlakno na reseni tohoto problemu → Jak vynechat funkcnoct Texy helperu

Diky za vsechny prispevky zde … bylo to podnetne a posunulo me to dal … byt zatim bez vysledku !