我怎样才能从zfcUser获取状态
在view / index.phtml中,我从$ this->获得它zfcUserIdentity() - > getState();
但现在我需要在其他模块/控制器(这是我的costum模块控制器)中获取此值(此用户已登录的状态)
所以我需要从以下地方获取州: zfcUser /实体/用户 至 Mymodule中/控制器
我看这个https://github.com/ZF-Commons/ZfcUser/wiki/How-to-check-if-the-user-is-logged-in,但这个解决方案没有帮助
答案 0 :(得分:7)
对我来说这也有帮助:
$sm = $this->getServiceLocator();
$auth = $sm->get('zfcuserauthservice');
if ($auth->hasIdentity()) {
$user_edit = $auth->getIdentity()->getPrem();
}
答案 1 :(得分:1)
按照此代码,我有同样的问题然后我已经管理如何通过zfcUser使用登录用户的身份
在上部的其他模块控制器中,
use Zend\EventManager\EventManagerInterface;
然后在同一个类中创建这两个函数,
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;
}
}
它会提供这种输出
Admin\Entity\User Object
(
[id:protected] => 2
[username:protected] =>
[email:protected] => rajat.modi@softwebsolutions.com
[displayName:protected] =>
[password:protected] => $2y$14$2WxYLE0DV0mH7txIRm7GkeVJB3mhD4FmnHmxmrkOXtUFL7S9PqWy6
[state:protected] =>
)
即使没有用户登录,你会自动获得身份,然后它会重定向到登录页面。
希望这会有所帮助
答案 2 :(得分:1)
state
是用户自己的属性。因此,如果您让用户通过身份识别服务,您可以从那里获取状态。
public function myFooAction()
{
if ($this->zfcUserAuthentication()->hasIdentity()) {
$user = $this->zfcUserAuthentication()->getIdentity();
$state = $user->getState();
}
}
请注意,当用户未登录时,if
条件为false。状态也可以是null
或任意值,所以不要指望每个用户都返回一个有效状态(换句话说,检查返回的值!)