Nefunguje odhlášení uživatele

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

Ahoj,

potýkám se s problém. Vytvořil jsem si jednoduchou akci logout, který by měla odhlásit uživatele, ale obohužel ho to neodhlásí. Nevíte, kde by mohl být problém?

šablona

<?php
<a n:href="Login:handleLogOut"> Odhlásit </a>
?>

Presenter

<?php
public function handleLogOut()
{

$this->getUser->logout();
}
?>

Kliknu na odkaz a uživatel je pořád přihlášený.

Glottis
Člen | 129
+
0
-

a jak to testujes? takhle nejak? $this->getUser()->isLoggedIn(); ?

Donkeykong
Člen | 39
+
0
-

Na stavovem radku je takovy „nette bar“, kde se zobrazuje prihlaseni

besanek
Člen | 128
+
0
-

Handle metody se volají pomocí vykřičníku. V tvém případě nějak takhle.

<a n:href="logOut!"> Odhlásit </a>

Navíc ti chybějí závorky za getUser.

Donkeykong
Člen | 39
+
0
-

Tak jsem to upravil, dal pryč handle pro lehčí pochopení a stejně nic

<?php
<a n:href="Login:logout"> Odhlásit </a>
?>

//LoginPresenter

<?php
public function logout()
	{

		$this->getUser()->logout();
	}

?>
enumag
Člen | 2118
+
0
-

Pořád ti chybí ten vykřičník

<a n:href="Login:logout!"> Odhlásit </a>

Kromě toho by se ti měla ukázat laděnka s chybou (pokud máš dev mode) anebo by něco mělo být v logu (pokud máš production mode).

Donkeykong
Člen | 39
+
0
-

enumag napsal(a):

Pořád ti chybí ten vykřičník

<a n:href="Login:logout!"> Odhlásit </a>

Kromě toho by se ti měla ukázat laděnka s chybou (pokud máš dev mode) anebo by něco mělo být v logu (pokud máš production mode).

S vykričníkem dostávám error:

<?php

Component with name 'Login' does not exist.

 <a href="<?php echo htmlSpecialChars($_control->link("Login:logout!")) ?>"> Odhlásit </a>




?>

Nemělo by mi to jít i bez vykričníku? Však mám jen metodu
public function logout()
 {

$this->getUser()->logout();
}

Tak proč to prostě nemůžu z šablony zavolat bez vykřičníku?

Editoval Donkeykong (23. 6. 2013 12:53)

enumag
Člen | 2118
+
0
-

Odkazy nefungujou na libovolnou metodu. Musí to být buď action (v případě presenterů) nebo signál (to funguje i na komponentách). Přečti si prosím dokumentaci.

Editoval enumag (23. 6. 2013 12:57)

22
Člen | 1478
+
0
-

V sandboxu v distribuci máš funkční příklad..

..jinak pokud se jedná o signál, tak metoda se musí jmenovat handleLogout, nikoliv jen logout

Editoval 22 (23. 6. 2013 12:57)

Donkeykong
Člen | 39
+
0
-

Díky moc. Už funguje, samozřejmě moje chyba.