我有一个具有 3 种不同布局的项目。1 种登录页面布局,1 种管理员和编辑者布局,以及第 3 种普通用户布局,管理员也可以访问(它的布局适用于 3 个不同页面,您可以在其中填写调查,这对于 3 个提到的用户来说是可能的组)。
目前我正在为此目的使用 EdpModuleLayouts,直到现在它都做得很好。因为现在我需要根据访问它的用户组来调整第三种布局。
你知道如何完成这项工作吗?
提前致谢。
我有一个具有 3 种不同布局的项目。1 种登录页面布局,1 种管理员和编辑者布局,以及第 3 种普通用户布局,管理员也可以访问(它的布局适用于 3 个不同页面,您可以在其中填写调查,这对于 3 个提到的用户来说是可能的组)。
目前我正在为此目的使用 EdpModuleLayouts,直到现在它都做得很好。因为现在我需要根据访问它的用户组来调整第三种布局。
你知道如何完成这项工作吗?
提前致谢。
您可以收听 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 );
}