Jak vypnout escapování ve {control Form error} a zobrazit tak html obsah

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Lukáš Růžička
Člen | 15
+
0
-

Zdravím,
jak vypnu escapování při vykreslení chybových hlášek formuláře v šabloně?

V presenteru mám toto:

<?php
        $form->addText('link', 'Odkaz na Marketplace')
                ->addRule(Form::FILLED, 'Zapomněli jste zadat odkaz na Marketplace')
                ->addRule('WpPresenter::checkDuplicateApp', "U <a href='".$this->link("editProfile")."'>vašeho vývojářského profilu</a> už aplikaci se stejným appid evidujeme a duplicitní položky není možné vkládat.")
                ->getControlPrototype()->setPlaceholder("http://www.windowsphone.com/s?appId=id-aplikace")->setClass("big");

?>

V šabloně jsem zkoušel toto:

{!control addForm errors}

Avšak neúspěšně. Html kód z chybové hlášky se vysype na obrazovku a nezpracuje se jako řádný odkaz.

Díky za reakce,

Lukáš Růžička

Editoval Lukáš Růžička (22. 5. 2012 14:34)

ViPEr*CZ*
Člen | 817
+
0
-

Chyby se dají vypsat např takhle:

{form myForm}
<!-- vykreslení chyb -->
<ul class="errors" n:if="$form->hasErrors()">
  <li n:foreach="$form->errors as $error">{$error}</li>
</ul>
{/form}

Jinak nevidím důvod to složitě vykreslovat. Ukázka je vlastní renderování. Ale pokud zavolám jen control, pak se chyby opět vypisují do ul-li tagu. S tím si pak už můžu dělat co chci. Samotné zachycení nevalidního odeslaného formu třeba do ajaxu pak můžu dělat takhle:

$this->onError[] = callback($this, 'FormError');
...
public function FormError() {
	$json = new stdClass();
	$json->result = "error";
	$json->message = $this->getErrors();
	$response = new Nette\Application\Responses\JsonResponse($json);
	$this->getPresenter()->sendResponse($response);
}
Lukáš Růžička
Člen | 15
+
0
-

Díky,
můj problém vyřešilo. Nicméně věřil jsem, že bude existovat i elegantnější cesta, než zkrátka chybové hlášky vypisovat takto ručně :)

LR