2017-01-04 1 views
2

Ich muss fragen, wie man den Namen des angemeldeten Benutzers in Nette Komponente (SomethingControl.php) bekommen. Anscheinend kann ich nicht dies nur tun:Nette getUser in Komponente

$identity = $this->getUser()->getIdentity(); 
    if ($identity) $this->template->username = $identity->getData()['username']; 

so habe ich versucht, dies:

$this->template->username = $this->user 

aber das funktioniert auch nicht.

Antwort

5

Sie können Benutzer nicht wie folgt erhalten, da UI\Control nicht von UI\Presenter abgeleitet ist. Aber Nette\Security\User ist Dienst an der DIC registriert, so können Sie es wie folgt erhalten:

class SomethingControl extends \Nette\Application\UI\Control 
{ 

    /** 
    * @var \Nette\Security\User 
    */ 
    private $user; 

    public function __construct(\Nette\Security\User $user) 
    { 
     parent::__construct(); 
     $this->user = $user; 
    } 

    public function render() 
    { 
     bdump($this->user); // getIdentity and username 
    } 

} 

einfach sicher, dass Sie Component Factory verwenden - Mittel schaffen Sie nicht Ihre Komponente in dem Moderator mit new Operator.

+0

Ist es in netten 2.3 arbeiten? – Muhaha

+0

Soweit ich weiß - ja, tut es. – mrtnzlml

+0

Es gibt Fehler Call to undefined function App \ MainModule \ Components \ bdump() – Muhaha

Verwandte Themen