2016-12-08 12 views
0

私はzendで新しく、zend framework 2.5.1を使用しています。 "authservice"を使用すると、プロジェクトでログイン認証が行われました。 $ this-> getAuthService() - > getIdentity();を使用してログインの詳細を取得できます。私のコントローラで。しかし、私はそれぞれのビューページ(レイアウト)でそれを使用したい。 私はセッションを管理することができますが、私はこれを行うことができません。 また、私はlayout.phtml(またはheader.phtml)にログインしたユーザ名を表示したいと思います。 「ようこそABC」のようなログインしたユーザー名を表示したい。 この問題を解決するのを手伝ってください。zend framework 2.5.1のlayout.phtmlの表示ユーザー名

答えて

2

layout.phtmlなどのビューファイル、またはページ固有のビューヘルパーを参照してください。Identityただ、文書の状態のような

if ($user = $this->identity()) { 
    echo $this->translate('Welcome') . ' ' . $this->escapeHtml($user->getUsername()); 
} else { 
    echo $this->translate('Welcome guest'); 
} 
1

は私が工場を経由して認証サービスを渡し、これを達成するために、カスタムビューヘルパーを使用します。

マイビューヘルパー

namespace Application\View\Helper; 

use Zend\View\Helper\AbstractHelper; 
use Zend\Authentication\AuthenticationService; 

class WelcomeUser extends AbstractHelper 
{ 

    private $welcomeUser; 

    /** 
    * 
    * @param AuthenticationService $auth 
    */ 
    public function __construct(AuthenticationService $auth) 
    { 
     $this->welcomeUser = 'Guest'; 
     if ($auth->hasIdentity()) { 
      $user = $auth->getIdentity(); 
      $this->welcomeUser = $user->getFirstLastName(); 
     } 
    } 

    /** 
    * 
    * @return string 
    */ 
    public function __invoke() 
    { 
     return $this->welcomeUser; 
    } 

} 

そして、それは工場

namespace Application\View\Helper\Service; 

use Zend\ServiceManager\FactoryInterface; 
use Zend\ServiceManager\ServiceLocatorInterface; 
use Application\View\Helper\WelcomeUser; 
use Zend\Authentication\AuthenticationService; 

class WelcomeUserFactory implements FactoryInterface 
{ 

    /** 
    * 
    * @param ServiceLocatorInterface $serviceLocator 
    * @return WelcomeUser 
    */ 
    public function createService(ServiceLocatorInterface $serviceLocator) 
    { 
     return new WelcomeUser($serviceLocator->getServiceLocator()->get(AuthenticationService::class)); 
    } 

} 

あなたのレイアウトで

'view_helpers' => array(
     'factories' => array(
      'welcomeUser' => 'Application\View\Helper\Service\WelcomeUserFactory', 
     ), 
    ), 

最後にmodule.config.phpでヘルパーを表示、登録することを忘れないでください。 .phtml使用<?php echo $this->welcomeUser(); ?>

私はこの点をあなたが正しい方向に向けることを願っています。

関連する問題