Předání jména aktuálního uživatele do komentáře
- mi85
- Člen | 41
Čau vytvořil sem si podle quickstartu blog s komentáři a chtěl bych poradit jak vzít aktuální jméno přihlášeného uživatele a použít ho v PostPresenteru.
public function commentFormSucceeded($form, $values)
{
$postId = $this->getParameter('postId');
$this->database->table('comments')->insert([
'post_id' => $postId,
'name' => $this->getUser()->$values['name'], <<<<
'email' => $values->email,
'content' => $values->content,
]);
$this->flashMessage('Děkuji za komentář', 'success');
$this->redirect('this');
}
Děkuji za vaše rady
- Jan Mikeš
- Člen | 771
Máš mnohem lepší, pokud do DB uložíš pouze id uživatele a vytvoříš si cizí klíč na tabulku s uživateli, ve výsledku by ten tvůj insert vypadal takto:
$this->database->table('comments')->insert([
'post_id' => $postId,
'user_id' => $this->getUser()->getId(),
'email' => $values->email,
'content' => $values->content,
]);
Potom v šabloně můžeš použít klidně toto:
Komentář napsal: {$comment->user->name}
Kdy se ti automaticky přes cizí klíč propojí tabulky
comments
a user
.
Abych ale plně odpověděl na tvou otázku, z aktuálního uživatele pouze jméno dostaneš následně:
$this->getUser()->getIdentity()->name;
// nebo zkráceně přes magické __get()
$this->user->identity->name;
Editoval Lexi (14. 9. 2016 19:24)
- mi85
- Člen | 41
Lexi napsal(a):
Máš mnohem lepší, pokud do DB uložíš pouze id uživatele a vytvoříš si cizí klíč na tabulku s uživateli, ve výsledku by ten tvůj insert vypadal takto:
$this->database->table('comments')->insert([ 'post_id' => $postId, 'user_id' => $this->getUser()->getId(), 'email' => $values->email, 'content' => $values->content, ]);
Potom v šabloně můžeš použít klidně toto:
Komentář napsal: {$comment->user->name}
Kdy se ti automaticky přes cizí klíč propojí tabulky
comments
auser
.Abych ale plně odpověděl na tvou otázku, z aktuálního uživatele pouze jméno dostaneš následně:
$this->getUser()->getIdentity()->name; // nebo zkráceně přes magické __get() $this->user->identity->name;
Děkuji! :-)
- Šaman
- Člen | 2666
Udělej si dump té $this->getUser()->getIdentity()
.
Jestli tam zádný name
není, tak ho odtud nedostaneš.
V identitě je jen to, co sis tam při přihlášení uložil. A pozor na to,
že informace tam nemusí být aktuální (třeba po změně jména
přuhlášeného uživatele zůstává v session původní identita). Lepší
je pracovat jen s tím $id
.