Logout v  @layoutu – sandbox

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
mordare
Začátečník | 117
+
0
-

Nzdar lidi dělám nějaké to přihlašování a použil sem ze sandboxu již ten předepsany presenter sign. všechno sem udělal a šlape tak jak má i přesměrovávání, ale chtel bych do @layoutu hodit text/tlačítko pro odhlášení které by bylo vidět jen když je někdo přláhlášený. Skoušel sem to Různě ale dycky sem se seknul na tom že nevim jak se mam v tom @layoutu odkázat do toho presenteru a na tom jaka má byt podminka aby to fungovalo. Mohli by jste mi někdo ukázát kód jak na to? dík

Editoval mordare (13. 4. 2011 23:00)

Operanda
Člen | 20
+
0
-

Stačí přímo v layoutu napsat:
{if isset($user)}<a href="{link odhlasit}">Odhllásit</a>{/if}

nanuqcz
Člen | 822
+
0
-

Já bych to napsal jako:

{if \Nette\Environment::getUser()->isLoggedIn()}
  přihlášen
{else}
  nepřihlášen
{/if}

a po přečtení přízpěvku od Operanda jsem zjistil, že Nette automaticky dává do šablony i proměnnou $user, takže bude stačit

{if $user->isLoggedIn()}
  přihlášen
{else}
  nepřihlášen
{/if}
kravčo
Člen | 721
+
0
-

Pozor, {if isset($user)} by malo byť splnené vždy. Lepšie bude {if $user->loggedIn}, alebo pomocou n: parametra <a n:if="$user->loggedIn" href="{link logOut}">Odhlásiť</a>

mordare
Začátečník | 117
+
0
-

Tak sem tam dal tento kód.

{if $user->isLoggedIn()}
  <a href="{link out}">Logout</a>
{else}
  <a href="{link in}">Login</a>
{/if}

a když se přihlásím a kliknu na Logout tak to vyhodí Page not found. Missing template '…/AdministrationModule/templates/Administration/out.latte'

ale já to potřebuju odkázat na prezenter sign a funkci out né templates out.latte pro presenter Administration

Editoval mordare (14. 4. 2011 6:51)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Já vím, že se říká, jak má Nette strašnou dokumentaci, ale tak strašná teda rozhodně není: https://doc.nette.org/…n/presenters, https://doc.nette.org/…n/presenters. Hledat a pročíst.

jazby
Člen | 44
+
0
-

Prostě takhle by to mělo fungovat:

{if $user->isLoggedIn()}
  <a n:href="{Sign:out}">Logout</a>
{else}
  <a n:href="{Sign:in}">Login</a>
{/if}
mordare
Začátečník | 117
+
0
-

Mno napsal sem to tak jaks poradily Jazby, ale když kliknu tak mi to vyhodí tablulku že nelze otevřít adresu neboť protokolu error neni přiřazen žádný program. A ve statusovém řádku je
Error: Presenter name must be alphanumeric string, "Administration:{Sign" is invalid.
jo možná sem zapoměl říci že mám vytvořený modul Administration a v tom je ten presenter Sign.

jazby
Člen | 44
+
0
-

mordare napsal(a):

Mno napsal sem to tak jaks poradily Jazby, ale když kliknu tak mi to vyhodí tablulku že nelze otevřít adresu neboť protokolu error neni přiřazen žádný program. A ve statusovém řádku je
Error: Presenter name must be alphanumeric string, "Administration:{Sign" is invalid.
jo možná sem zapoměl říci že mám vytvořený modul Administration a v tom je ten presenter Sign.

No tak pak asi ještě zkusit:

<a n:href="Administration:Sign:out">Out</a>
popř
<a n:href=":Administration:Sign:out">Out</a>

viz: https://doc.nette.org/…n/presenters

Editoval jazby (14. 4. 2011 10:20)

mordare
Začátečník | 117
+
0
-

tak už sem na to přišel. takto to funguje.
<a n:href="Sign:out">Logout</a>

nanuqcz
Člen | 822
+
0
-

případně

<a href="{link Sign:out}">Logout</a>

taky bude fungovat ;-)

jazby
Člen | 44
+
0
-

mordare napsal(a):

tak už sem na to přišel. takto to funguje.
<a n:href="Sign:out">Logout</a>

no to bych nesměl dělat překlepy když odpovídám… promiň