Escapovanie html v addError

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

Zdravím,
keď do formuláru pridám pomocou metódy addError chybu a zobrazím v šablóne pomocou {!$form->render(‚errors‘)}, vždy mi to vyescapuje html kód. Dalo by sa tomuto nejak zamädziť?

Vďaka.

_Martin_
Generous Backer | 679
+
0
-

Ahoj, pokud chceš jako chybu zobrazit vlastní (X)HTML kód, musíš jej předat jako potomka objektu třídy Html.

	$form->addError(Html::el('strong')->setText('Tučně vypsaná chyba'));

Jak s třídou Html pracovat najdeš v dokumentaci.

P.S. Kód jsem netestoval, ale měl by fungovat – kdyby ne, napiš.

timbulko
Člen | 85
+
0
-

Takto mi to bohužiaľ nefunguje. Potrebujem do addError dostať chybovú hlášku, ktorá má však prejsť ešte cez vlastný translate helper.

Pôvodný kód:

<?php
  ...
  if (!$row) {
    throw new AuthenticationException(Helpers::translate("Užívateľ s prihlasovacím menom <i>%s</i> nebol nájdený", $username), self::IDENTITY_NOT_FOUND);
  }
?>

Kód s použitím Html triedy:

<?php
  ...
  if (!$row) {
    throw new AuthenticationException(Helpers::translate("Užívateľ s prihlasovacím menom ".Html::el("i")->setText("%s")." nebol nájdený", $username), self::IDENTITY_NOT_FOUND);
  }
?>

Ani v jednom prípade to však nefunguje tako ako by som si predstavoval a html znaky to vyescapuje.

Ola
Člen | 385
+
0
-

To je logický, protože Html::__toString() ten obsah vyrenderuje a potom to je to samý jako bez použití Html třídy. Jít by mohlo možná tohle (netestoval jsem to):

if (!$row) {
	throw new AuthenticationException(Html::el()->setHtml(Helpers::translate("Užívateľ s prihlasovacím menom <i>%s</i> nebol nájdený", $username)), self::IDENTITY_NOT_FOUND);
}
timbulko
Člen | 85
+
0
-

Bohužiaľ, nefunguje to.

Ola
Člen | 385
+
0
-

Teď sem to zkoušel přes form->addError a jede to v pohodě..

timbulko
Člen | 85
+
0
-

Aha, moja chyba. už mi to funguje :-) Vďaka za pomoc.