3

我正在使用 ZfcUser 进行身份验证。当前试图判断用户是否使用 ...

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

我猜我需要为应用程序配置文件添加一些路径?

4

4 回答 4

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',
                    ),
                ),
            ),
        ),
    ),
);

这会加载两个视图助手,因此如果您只需要 zfcUserIdentity 助手,那么您始终可以删除对 zfcUserLoginWidget 的引用。

于 2012-05-11T11:42:08.613 回答
4

我是 Zend Framework 2(和 ZfcUser)的新手,所以当您发布问题时,我不知道它是如何工作的。现在它很简单:

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

它在 ZfcUser 的 Module.php 中的 getViewHelperConfig() 函数中定义。如果用户已登录,它将返回 ZfcUserDoctrineORM\Entity\User 的实例,否则返回 false。

于 2012-12-18T09:48:31.263 回答
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

我不知道这是否是“正确”的方式,但您可以将身份添加为布局的 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 回答