2017-01-04 9 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

関連する問題