3

ZfcUser を使用して認証しています。現在、ユーザーがlayout.phtmlファイルにログインしているかどうかを確認しようとしています...

<? if ($this->zfcUserAuthentication()->hasIdentity()): ?>

アプリケーション構成ファイルへのパスを追加する必要があると思いますか?

4

4 に答える 4

4

私は Zend Framework 2 (および ZfcUser) を初めて使用するので、質問を投稿したときにどのように機能したかわかりません。現在、次のように簡単です。

<?php if ( $this->zfcUserIdentity() ) { ?>

ZfcUser の Module.php の getViewHelperConfig() 関数で定義されています。ユーザーがログに記録されている場合は、ZfcUserDoctrineORM\Entity\User のインスタンスが返されます。それ以外の場合は false が返されます。

于 2012-12-18T09:48:31.263 に答える
4

ZfcUser で提供されているビュー ヘルパー (つまり、質問で参照したもの、mtbikemike ) を使用できます。モジュールの構成 (module.config.php) に以下を追加して、動的インジェクションを使用してビュー ヘルパーを読み込みます。もちろん、以下のコードを既存の module.config.php の内容と統合する必要があるかもしれません。

return array(
    'di' => array(
        'instance' => array(
            'Zend\View\HelperLoader' => array(
                'parameters' => array(
                'map' => array(
                        'zfcUserIdentity' => 'ZfcUser\View\Helper\ZfcUserIdentity',
                        'zfcUserLoginWidget' => 'ZfcUser\View\Helper\ZfcUserLoginWidget',
                    ),
                ),
            ),
        ),
    ),
);

これにより 2 つのビュー ヘルパーが読み込まれるため、zfcUserIdentity ヘルパーのみが必要な場合は、いつでも zfcUserLoginWidget への参照を削除できます。

于 2012-05-11T11:42:08.613 に答える
2

ビューヘルパーの例: ユーザーがログインしているかどうかを確認する方法

<!-- Test if the User is connected -->
<?php IF(!$this->zfcUserIdentity()): ?>
    <!-- display the login form -->
    <?php echo $this->zfcUserLoginWidget(array('redirect'=>'application')); ?>
<?php ELSE: ?>
    <!-- display the 'display name' of the user -->
    <?php echo $this->zfcUserIdentity()->getDisplayname(); ?>
<?php ENDIF ?>
于 2013-02-11T13:49:45.230 に答える
0

これが「正しい」方法かどうかはわかりませんが、ID をレイアウトの ViewModel 変数として追加できます。Module クラスに以下を追加します。

public function init(Manager $moduleManager)
{
    $events = $moduleManager->events();
    $sharedEvents = $events->getSharedCollections();
    $sharedEvents->attach('bootstrap', 'bootstrap', array($this, 'initializeView'), 100);
}

public function initializeView($e)
{
    $app = $e->getParam('application');  
    $viewModel = $app->getMvcEvent()->getViewModel();
    $viewModel->myLayoutVariable = 'myLayoutVariable';                
}
于 2012-05-03T02:16:13.283 に答える