Ajax formular v komponente a addError
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- fojta
- Člen | 24
Zdravim,
mam problem pri zpracovani ajaxoveho formulare v komponente.
Zpracovani formu takto:
try {
// auth by credentials
$this->user->login($values->email, $values->passwd);
// remember
if($values->remember)
$this->user->setExpiration(0, TRUE);
// flash message
$this->presenter->flashMessage("Byl jste přihlášen.", "success");
// redirect
$this->parent->redirect('this');
} catch (\Nette\Security\AuthenticationException $e) {
$this->addError($e->getMessage());
} catch (\Exception $e) {
if ($e instanceof \Nette\Application\AbortException) {
throw $e;
}
$this->addError('Nepovedlo se přihlásit. Prosím kontaktujte administrátora.');
error_log($e->getMessage());
}
V komponente mam klasickou tovarnicku createComponent…
A jde me o to ze prih. form me funguje pri zadani spravnych udaju, ale
jakmile to ma zobrazit error, a jak je videt tak tam cpu chybovou hlasku pres
addError metodu, je ajaxova odpoved prazdna: {"state":[]}
. Pri
nevyhozeni vyjimky me to v pohode vrati JSON s redirectem.
Jinak formular je ve snippetu kterej invaliduju v komnonente v metode render()
Takze hlavni problem je ajaxove vraceni i errorovych hlasek.
Prosim o help :) Urcite to bude naka banalita
Editoval fojta (25. 10. 2012 14:55)
- fojta
- Člen | 24
Jak jsem psal vise, invaliduju v render metode. Ale snad spravne.
class AuthenticateControl extends Nette\Application\UI\Control
{
/** @var string path to template file */
private $template_file;
/**
* Render
*/
public function render()
{
if(empty($this->template_file))
throw new Exception('Template for component \''. $this->getName() .'\' was not filled.');
if($this->presenter->isAjax()){
$this->invalidateControl('form');
}
$this->template->setFile($this->template_file);
$this->template->render();
}
protected function createComponentForm(){
return \MujForm;
}
}