2017-01-04 5 views
2

Nette 구성 요소 (SomethingControl.php)에 로그인 한 사용자의 이름을 얻는 방법을 묻습니다. 구성 요소의 Nette getUser

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

그래서 나는이 시도했습니다 :

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

을하지만 그 중 하나가 작동하지 않습니다 분명히 난 그냥 이렇게 캔트.

답변

5

UI\ControlUI\Presenter의 자손이 아니기 때문에 사용자를 이와 같이 구할 수 없습니다. 그러나 Nette\Security\User는 DIC에 등록 된 서비스가 그래서 당신은 이런 식으로 그것을 얻을 수 있습니다 :

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 
    } 

} 

그냥 당신이 Component Factory를 사용하고 있는지 확인 - 수단 new 연산자를 사용하여 발표자의 구성 요소를 작성하지 않습니다.

+0

nette 2.3에서 작동합니까? – Muhaha

+0

내가 아는 한 - 그렇습니다. – mrtnzlml

+0

에러를 반환합니다. 정의되지 않은 함수 App \ MainModule \ Components \ bdump()를 호출하십시오. – Muhaha