ZF2用户组特定布局

时间:2014-07-26 10:40:17

标签: zend-framework2 zend-acl zend-layout

我有一个包含3种不同布局的项目。 1登录页面的布局,1管理员和编辑者的布局,以及管理员可以访问的一般用户的第3布局(它是3个不同页面的布局,您可以在其中填写3个提到的用户可能进行的调查基团)。

目前我正在使用EdpModuleLayouts用于此目的,直到现在一直很好。因为现在我需要根据哪个用户组访问它来调整第3个布局。

你知道如何完成这项工作吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以听取zf2 mvc事件并根据您的标准更改布局。 这是您的应用程序Module.php的外观示例。

public function onBootstrap(MvcEvent $e)
{
    $application =  $e->getApplication();
    $serviceManager = $application->getServiceManager();
    $eventManager = $application->getEventManager();
    $sharedManager = $eventManager->getSharedManager();

    // DISPATCH EVENT
    $sharedManager->attach('Zend\Mvc\Controller\AbstractActionController', 'dispatch', function( MvcEvent $e) use ($serviceManager) {

        // get your instance to locate current user group or something else
        $auth = $serviceManager->get('Some/Auth/Service');
        $userGroup = $auth->getUserGroupFromCurrentUser();

        $controller      = $e->getTarget();

        if( $userGroup == 'someGroup' )
        {
            $controller->layout('layout/somelayoutname');
        } else {
            $controller->layout('layout/someotherlayoutname');
        }
    }, 50 );
}