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
commentsauser.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 | 2668
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.