我必须问如何将登录用户的名称添加到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/