zfcUser getState в другом модуле

Как я могу получить состояние от zfcUser

в view/index.phtml я получаю его из $this->zfcUserIdentity()->getState();

но теперь мне нужно получить это значение (состояние для этого пользователя, который вошел в систему), в другом модуле / контроллере (это мой контроллер модуля costum)

поэтому мне нужно получить состояние от: zfcUser/Entity/User в myModule/Controller

я смотрю этот https://github.com/ZF-Commons/ZfcUser/wiki/How-to-check-if-the-user-is-logged-in но этот солютон не помогает

3 ответа

Решение

И это тоже помогает мне

$sm = $this->getServiceLocator();
$auth = $sm->get('zfcuserauthservice');
if ($auth->hasIdentity()) {
    $user_edit = $auth->getIdentity()->getPrem();
}

state это свойство самого пользователя. Таким образом, если вы получаете пользователя через службу идентификации, вы можете получить состояние оттуда.

public function myFooAction()
{
    if ($this->zfcUserAuthentication()->hasIdentity()) {
        $user  = $this->zfcUserAuthentication()->getIdentity();
        $state = $user->getState();
    }
}

Имейте в виду, что когда пользователь не вошел в систему, if условие ложное. Также государство может быть null или любое произвольное значение, поэтому не ожидайте, что каждый пользователь вернет правильное состояние (другими словами, проверьте возвращаемое значение!)

Следуйте этому коду, у меня была та же проблема, то я должен управлять тем, как использовать личность вошедшего в систему пользователя через 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] => 
)

Вот и все, вы автоматически получите идентификатор, если пользователь вошел в систему, если нет, то он будет перенаправлен на страницу входа.

Надеюсь, это поможет

Другие вопросы по тегам