我必须问如何将登录用户的名称添加到Nette组件(SomethingControl.php)中。显然我不能这样做:

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


所以我尝试了这个:

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


但这也不起作用。

最佳答案

您无法获得这样的用户,因为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运算符在演示器中创建组件。

关于php - Nette getUser在组件中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41466756/

10-08 22:14