Předání identity uživatele do modelu
- kloban
- Člen | 123
Ahoj,
potřebuji při zápisu záznamu do databáze zaznamenávat i který uživatel
záznam vytvořil.
Mám v modelu třídu Skola
a v ní potřebuji znát id
uživatele.
Instanci objektu Skola
volám z Presenteru
AddSkolaPresenter
.
Závislost se snažím předat konstruktorem.
Třída Skola
vypadá nějak takto:
class Skola extends \Nette\Object
{
/**
* @var \Kdyby\Doctrine\EntityManager
*/
protected $EntityManager;
/**
* @var NS\User
*/
private $MyUser;
public function __construct(\Kdyby\Doctrine\EntityManager $EntityManager, Nette\Security\User $MyUser)
{
$this->EntityManager = $EntityManager;
$this->MyUser = $MyUser;
}
public function add($nazev, $ulice, $co, $cp, $mesto, $psc, $poznamka)
{
...
...
}
}
V konstruktoru tedy potrebuji ziskat jak připojení do DB tak identitu uživatele.
AddUserPresenter volá instanci takto:
class AddSkolaPresenter extends BasePresenter
{
/**
* @inject
* @var \Kdyby\Doctrine\EntityManager
*/
public $EntityManager;
...
...
public function PridatSkoluSucceeded($form){
...
$Uloz = new Models\Skola($this->EntityManager, $this->user);
$Uloz->add($nazev, $ulice, $co, $cp, $mesto, $psc, $poznamka);
$this->flashMessage('Škola přidána.', 'success');
$this->redirect('this');
}
}
Připojení do databáze se mi předá user nikoliv.
Nette se tváří, že mu nepředávám instanci
App\Models\Nette\Security\User.
`Argument 2 passed to App\Models\Skola::__construct() must be an instance of
App\Models\Nette\Security\User, instance of Nette\Security\User given, called in
/var/www/obecnaskola/app/presenters/AddSkolaPresenter.php on line 66 and
defined `
Díky za rady
Dan
- n.u.r.v.
- Člen | 485
Ahoj, a je v pořádku když mám model kde potřebuji např. pracovat jen s ID usera, tak že si v tom modelu udělám privátní proměnnou + její setter a v presenteru mám v konstruktoru ten model a ve startupu plním to ID v modelu?
Model mám samozřejmě registrován v neonu v services…
Díky