Jak se dostat k identitě uživatele v prezenteru?
- kloban
- Člen | 123
Ahoj,
mám presenter ve kterém ukládám do databáze záznamy. U záznamu
potřebuji mít také id uživatele, který ho vložil.
Jak nejlépe v prezenteru k id uživatele (repektive k jeho identitě)
přistupovat?
Je na to dělané rozhraní IUserStorage? Nebo je něco lepšího? Pokud je
k tomu IUserStorage nejlepší, máte příklad nějaké vzorové
implementace?
Díky.
- Jiří Nápravník
- Člen | 710
V presenteru
$this->getUser()->getIdentity() //tam mas celou identitu
ale je lepsi tyhle veci resit v modelu
- kloban
- Člen | 123
Dík. :-)
Ano to jsem taky váhal kde to řešit. Momentálně v presenteru vygeneruji
formulář a při zpracování pošlu data do modelu. V modelu je zapíši do
databáze.
Teď jsem to tedy vyřešil tak, že v prezenteru si zjistím id uživatele a
pošlu ho se všemi daty do modelu.
Jak mohu identitu zjistit v modelu? Tam mi to samo o sobě pomocí
$this->getUser()
nezafunguje.
- kloban
- Člen | 123
Znamená to, že si mám v modelu vytvořit instanci třídy
user
?
Do modelu jsem ho přidal takto:
<?php
namespace App\Models;
use Nette\Security as NS,
App\entities,
Nette\Utils\Strings;
class Skola extends \Nette\Object
{
/**
* @var \Kdyby\Doctrine\EntityManager
*/
protected $EntityManager;
public function __construct(\Kdyby\Doctrine\EntityManager $EntityManager)
{
$this->EntityManager = $EntityManager;
}
public function add($nazev, $ulice, $co, $cp, $mesto, $psc, $poznamka)
{
...
$testuser = new NS\User;
$testuser->getId();
...
...
Končí to ale chybou:
Argument 1 passed to Nette\Security\User::__construct() must implement interface Nette\Security\IUserStorage