Nette getUser在组件中

时间:2017-01-04 14:53:35

标签: php components username nette

我不得不问如何将已登录用户的名称输入Nette组件(SomethingControl.php)。显然我不能这样做:

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

所以我试过这个:

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

但这也不起作用。

1 个答案:

答案 0 :(得分:5)

您无法获得此类用户,因为UI\Control不是UI\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运算符在演示者中创建组件。