Module 另一个模块中的zfcUser getState

Module 另一个模块中的zfcUser getState,module,zend-framework2,zfcuser,Module,Zend Framework2,Zfcuser,如何从zfcUser获取状态 在view/index.phtml中,我从$this->zfcUserIdentity()->getState()获取它 但现在我需要在其他模块/控制器(这是我的costum模块控制器)中获取该值(该登录用户的状态) 因此,我需要从以下方面获取状态: zfcUser/实体/用户 到 myModule/控制器 我注意到了这一点,但这一解决方案没有帮助遵循这段代码,我遇到了同样的问题,然后我不得不通过zfcUser管理如何使用登录用户的身份 在上部组块的其他模块控制器中

如何从zfcUser获取状态

在view/index.phtml中,我从$this->zfcUserIdentity()->getState()获取它

但现在我需要在其他模块/控制器(这是我的costum模块控制器)中获取该值(该登录用户的状态)

因此,我需要从以下方面获取状态: zfcUser/实体/用户 到 myModule/控制器


我注意到了这一点,但这一解决方案没有帮助

遵循这段代码,我遇到了同样的问题,然后我不得不通过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();
}