User id a metoda getId v modelu

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

Zdravím, mám model, který má za úkol logovat situace (přihlášení, hledání ..) a ukládat data do db. Vyskytl se mě tu ale problém. U každé metody modelu log je user_id, které jsem tahal z DI containeru,

public function __construct(Connection $db,Request $request,User $user){
   $this->db = $db;
   $this->request = $request;
   $this->user = $user;
}

Ovšem při volání

$this->user->getId();

se mi permanetně dostává int 1
i když je přihlášenej user s id 30

Nevíte někdo jak správně implementovat Nette\Security\User tak abych dostával správné id a vyhnul se předávání hodnot z presenteru?

Tabetha
Člen | 140
+
0
-

mne to kedysi robilo čosi podobné … tak mám v danom modele setter a tým si nastavím z presenteru užívateľa …

castamir
Člen | 629
+
0
-

prosím o ukázku zavolání té třídy modelu a volání nějaké její metody např z presenteru.

Já běžně předávám údaje jako id uživatele jako parametr metody modelu a id získávám již v presenteru pomocí $this->user->id.

jiri.pudil
Nette Blogger | 1032
+
0
-

Nette\Security\User::getId() zavolá getId() nad identitou, takže ti vrátí to ID, které jsi (typicky v autentikátoru) do identity zadal.

Tabetha
Člen | 140
+
0
-

nejako takto by to malo ísť tiež … hádam tam nemám žiadny preklep alebo nesúvislosť :)

class Log extends Object
{
	/** @var Nette\Security\User */
	private $user;
	public function __construct(Connection $db,Request $request)
	{
		$this->db = $db;
		$this->request = $request;
	}

	public funcion setUser(User $user)
	{
		$this->user = $user;
	}
}

abstract class BasePresenter extends Presenter
{
	/** @var Log */
	protected $log;
	public function startup()
	{
		parent::startup();
		$this->log->setUser($this->getUser());
	}

	public function injectLog(Log $log)
	{
		$this->log = $log;
	}
}

Editoval Tabetha (19. 1. 2013 19:29)

joker0cz
Člen | 16
+
0
-

Jj, díky všem, vyřešeno!

Editoval joker0cz (19. 1. 2013 20:04)

Tabetha
Člen | 140
+
0
-

a aké je teda riešenie? keby to niekto hľadá :)

castamir
Člen | 629
+
0
-

@Tabetha Nejspíš použil to tvé řešení ;)