Jak na formularove chyby obalene ve snippetu? (Nette 2.1)
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- MartyIX
- Člen | 217
Ahoj,
rad bych se zeptal, jak hezky vyresit nasledujici problem:
{form forgotPasswordForm}
{snippet forgotPasswordFormErrors}
{* tady promenna $form neexistuje kvuli snippetu *}
{* Jednoducha komponenta, ktera vykresli chyby, neni dulezite jak presne se chova *}
{control formErrors, $control->getComponent('forgotPasswordForm')->getErrors()} {* tahle radka je velmi oskliva, jde nejak pekne nahradit? *}
{/snippet}
<table>
<tr>
<td>{label email /}</td>
<td>{input email}</td>
</tr>
<tr>
<td></td>
<td>
{input submit}
</td>
</tr>
</table>
{/form}
Jak toto resite vy?
Diky
PS: Pouzivam nette.ajax.js, Nette 2.1
- Jan Tvrdík
- Nette guru | 2595
Zkusil bych, jestli nebude náhodou fungovat
{control formErrors, $form->errors}
- Jiří Nápravník
- Člen | 710
Ve snippet $form nefunguje. Dneska jsem řešil něco podobného. Pokud chceš mít ve snippetu $form, tak mi to vyřešilo nastavení v presenteru: $this->template->__form = $form; a bylo
Jinak když jsem řešil takové vypisování errorů v komponentě. Tak jsem si to udělal už v presenteru, kdy jsem vytvářel tu komponentu
protected function createComponentFormErrors(){
return $this->errorsFactory->create($this['form!]);
}
a v latte pak volal jen samotnou {control formErrors}
- akadlec
- Člen | 1326
@MartyIX: a není jednodušší si form messages předat do flash messages? Pak budeš mít výpis hlášek jednotný. Stačí jen na form pověsit akci co to překonvertuje:
// Form success calback
$form->onSuccess[] = (function() use($form) {
// Form have some error messages
if ( $form->hasErrors() ) {
// Add form errors to flash messages
foreach($form->errors as $message) {
$form->presenter->flashMessage($message, "warning");
}
}
});