Escapovanie html v addError
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- _Martin_
- Generous Backer | 679
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
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
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);
}