2

zfcUserからStateを取得するにはどうすればよいですか

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で見ていますが、このソリューションは役に立ちません

4

3 に答える 3

7

そしてこれも私にとって役立ちます:

$sm = $this->getServiceLocator();
$auth = $sm->get('zfcuserauthservice');
if ($auth->hasIdentity()) {
    $user_edit = $auth->getIdentity()->getPrem();
}
于 2012-12-26T11:07:00.710 に答える
1

このコードに従ってください、私は同じ問題を抱えていました、そして私はzfcUserを介してログインしたユーザーのIDを使用する方法を管理しました

トップサイドの他のモジュールコントローラーでは、

  use Zend\EventManager\EventManagerInterface;

次に、同じクラスでこの2つの関数を作成します。

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] => 
)

これで、ユーザーがログインしているかどうかに関係なく、自動的にIDが取得され、ログインしていない場合は、ログインページにリダイレクトされます。

これがお役に立てば幸いです

于 2012-12-24T06:52:19.650 に答える
1

これstateは、ユーザー自身のプロパティです。したがって、識別サービスを介してユーザーを取得すると、そこから状態を取得できます。

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

ユーザーがログインしていないif場合、条件はfalseであることに注意してください。また、状態はnull任意の値にすることができるため、すべてのユーザーが有効な状態を返すことを期待しないでください(つまり、戻り値を確認してください)。

于 2012-12-24T09:16:12.830 に答える