Odchytenie vynimky z modelu v prezenteri

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

Zdravim,
uz dlhsie hladam kde je pes zakopany a nedari sa mi. Upgradol som moju „admin“ aplikaciu do Nette 2.0-dev, PHP 5.3.

Moj problem je, ze neviem spravit to, aby bola korektne odchytena chyba z modelu v prezenteri. V starsej verzii to funguje ako ma.

Priklad:

model:

<?php
	public function authenticate(array $credentials)
	{
		list($username, $password) = $credentials;
		$row = dibi::fetch('...');

		if (!$row) {
			throw new AuthenticationException("Používateľ '$username' sa nenašiel.", self::IDENTITY_NOT_FOUND);

		}

		if ($row->password !== sha1($password)) {
			throw new AuthenticationException("Nesprávne heslo.", self::INVALID_CREDENTIAL);
		}
		unset($row->password);
		return new Nette\Security\Identity($row->user_id, $row->role, $row);
	}
?>

presenter:

<?php
	public function loginFormSubmitted($form)
	{
		try {
			$user = $this->getUser();
			$user->login($form['username']->getValue(), $form['password']->getValue());
			$this->getApplication()->restoreRequest($this->backlink);
			$this->flashMessage('Boli ste úspešne prihlásený.', 'success');
			$this->redirect('Gallery:default');
		} catch (AuthenticationException $e) {
			$this->flashMessage($e->getMessage(), 'error');
		}
	}
?>

Problem je, ze mi chybu ukaze az Ladenka, namiesto toho, aby bola odchytena a ukazala sa flash spravicka.

Je to vecou nejakeho nastavenia, alebo mi nieco uniklo vramci PHP 5.3? Viete niekto ako na to?

Diki moc!

finwe
Člen | 58
+
0
-

Zkontroluj si, jestli mají výjimky u throw i catch přesně stejný namespace, případně použij fully qualified name třídy výjimky.

tomolas
Člen | 66
+
0
-

Dakujem za bleskovu odpoved!
Bolo to fakt v tom.

Takze spravna odpoved pre dalsie generacie znie:

<?php
	...
	} catch (Nette\Security\AuthenticationException $e) {  // Namiesto AuthenticationException
		$this->flashMessage($e->getMessage(), 'error');
	}
	...
?>
bazo
Člen | 620
+
0
-

tipujem, ze ti chyba \ pred nazvom vynimky