0

3 つの異なるレイアウトを持つプロジェクトがあります。ログインページ用の 1 つのレイアウト、管理者および編集者用の 1 つのレイアウト、および管理者もアクセスできる一般ユーザー用の 3 つ目のレイアウト (3 つの言及されたユーザーが可能なアンケートに記入できる 3 つの異なるページのレイアウト)グループ)。

現時点では、この目的のために EdpModuleLayouts を使用していますが、これは今までうまくいきました。アクセスするユーザーグループに応じて、3番目のレイアウトを調整する必要があるためです。

これを行う方法はありますか?

前もって感謝します。

4

1 に答える 1

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 );
}
于 2014-07-26T18:28:29.957 に答える