Module 另一个模块中的zfcUser getState
如何从zfcUser获取状态 在view/index.phtml中,我从$this->zfcUserIdentity()->getState()获取它 但现在我需要在其他模块/控制器(这是我的costum模块控制器)中获取该值(该登录用户的状态) 因此,我需要从以下方面获取状态: zfcUser/实体/用户 到 myModule/控制器Module 另一个模块中的zfcUser getState,module,zend-framework2,zfcuser,Module,Zend Framework2,Zfcuser,如何从zfcUser获取状态 在view/index.phtml中,我从$this->zfcUserIdentity()->getState()获取它 但现在我需要在其他模块/控制器(这是我的costum模块控制器)中获取该值(该登录用户的状态) 因此,我需要从以下方面获取状态: zfcUser/实体/用户 到 myModule/控制器 我注意到了这一点,但这一解决方案没有帮助遵循这段代码,我遇到了同样的问题,然后我不得不通过zfcUser管理如何使用登录用户的身份 在上部组块的其他模块控制器中
我注意到了这一点,但这一解决方案没有帮助遵循这段代码,我遇到了同样的问题,然后我不得不通过zfcUser管理如何使用登录用户的身份 在上部组块的其他模块控制器中
use Zend\EventManager\EventManagerInterface;
然后在sameclass中创建这两个函数
public function setEventManager(EventManagerInterface $events)
{
parent::setEventManager($events);
$controller = $this;
$events->attach('dispatch', function ($e) use ($controller) {
if (is_callable(array($controller, 'checkUserIdentity')))
{
call_user_func(array($controller, 'checkUserIdentity'));
}
}, 100);
}
public function checkUserIdentity()
{
if ($this->zfcUserAuthentication()->hasIdentity()) {
echo "<pre>"; print_r($this->zfcUserAuthentication()->getIdentity());die;
}
}
也就是说,无论用户是否登录,您都会自动获取标识,若未登录,则会重定向到登录页面
希望这会有所帮助状态是用户自己的属性。因此,如果您让用户通过身份识别服务,您可以从那里获取状态
$sm = $this->getServiceLocator();
$auth = $sm->get('zfcuserauthservice');
if ($auth->hasIdentity()) {
$user_edit = $auth->getIdentity()->getPrem();
}
请注意,当用户未登录时,
if
条件为false。此外,状态可以是null
或任意值,因此不要期望每个用户都返回有效状态(换句话说,检查返回值!),这对我也有帮助:
对不起,不需要,我只需要getState表单用户登录,如果没有,那么它会给我null。我可能必须使用BjyAuthorize吗?我尝试将其放在其他控制器中:使用ZfcUser\Entity;然后在此函数中使用:$state=$this->getState();但它给我的只是错误,请帮助我更新我的代码,请检查它,让我知道它的工作与否。。。它是由我测试的…是的状态显示为空,因为在数据库中它是空列,这就是为什么它是空字符串。在此字段中插入它将显示的一些数据。希望这有意义。。。
public function myFooAction()
{
if ($this->zfcUserAuthentication()->hasIdentity()) {
$user = $this->zfcUserAuthentication()->getIdentity();
$state = $user->getState();
}
}
$sm = $this->getServiceLocator();
$auth = $sm->get('zfcuserauthservice');
if ($auth->hasIdentity()) {
$user_edit = $auth->getIdentity()->getPrem();
}