Smazaní komentáře – porovnání vlastníka a přihlášeného uživatele

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

Čau,
udělal jsem si podle quickstartu blog a nyní bych chtěl umožnit vlastníkovy komentáře aby jej mohl smazat.
Nevím jak ale v .latte zobrazit tuto možnost jen uživateli když se jméno uživatele rovná jménu přihlášeného uživatele.

{foreach $comments as $comment}
		<div class="panel panel-default">
		<p>#{$comment->id} <b>{$comment->name}</b> napsal:{if ($user->name)==($comment->name)}Vlastnik{/if}</p>
		<div class="jumbotron">{$comment->content}</div>
		</div>
	{/foreach}

Děkuji za rady.

Editoval mi85 (2. 10. 2016 9:47)

CZechBoY
Člen | 3608
+
0
-

Lepsi podle id.

{if $user->getId() === $comment->id_author}

Pres jmeno bych to neparoval (pokud neni unikatni).

iNviNho
Člen | 352
+
+1
-

A nezabudni ošetriť mazanie aj na strane servera :)

mi85
Člen | 41
+
0
-

Díky ale pokud to chci porovnávat se jménem tak to mám následně

{if $user->name === $comment->name}

Tracy mi ale vyhazuje Cannot read an undeclared property Nette\Security\User::$name.
Díky

CZechBoY
Člen | 3608
+
0
-

Jmeno mas nejspis v identite

{if $user->getIdentity()->name === ...}
Šaman
Člen | 2666
+
+3
-

Na data v identitě se raději nespoléhej. Spíš doporučuji brát na bernou minci jen $netteSecurityUser->id a předtím si zkontrolovat, že $netteSecurityUser->isLoggendIn().
Identita je totiž jen záznam v session, kam si můžeš zapsat co chceš, zůstává tam poslední záznam i když není nikdo přihlášený (proto ta kontrola) a navíc se neaktualizuje, pokud dojde třeba ke změně jména v databázi.

Takže pokud je uživatel přihlášený, tak si ho načti z databáze podle id z identity. A pak už si ho porovnávej jak chceš, máš ho aktuálního.

Editoval Šaman (2. 10. 2016 18:07)