ZF2 Пользовательские группы конкретных макетов

У меня есть проект с 3 различными макетами. 1 макет для страницы входа в систему, 1 макет для администраторов и редакторов и 3-й макет для обычных пользователей, к которым также имеют доступ администраторы (это макет для 3 различных страниц, где вы можете заполнять опросы, которые возможны для 3 упомянутых пользователей группы).

В настоящее время я использую EdpModuleLayouts для этой цели, которая до сих пор работала нормально. Потому что теперь мне нужно адаптировать третий макет в зависимости от того, какая группа пользователей обращается к нему.

У вас есть идеи, как это сделать?

Заранее спасибо.

1 ответ

Решение

Вы можете прослушать события 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 );
}
Другие вопросы по тегам