Php zf3在操作中获得不同的视图

Php zf3在操作中获得不同的视图,php,zend-framework3,Php,Zend Framework3,在zf2中,我这样做 $view = 'application/use/view'; $htmlString = $this->getServiceLocator() ->get('viewmanager') ->getRenderer() ->render( $view, array( 'institute' => $institute,

在zf2中,我这样做

$view = 'application/use/view';
$htmlString = $this->getServiceLocator()
        ->get('viewmanager')
        ->getRenderer()
        ->render(
            $view,
            array(
                'institute' => $institute,
                'gender' => $gender
            )
        );
但是在zf3中没有直接的
getServiceLocator
方法如何通过工厂在zf3中实现这一点 到目前为止,我已经做到了:

在我的工厂里

public function __invoke(ContainerInterface $container, $requestedName, Array $options = null) {
    $auth = $container->get('doctrine.authenticationservice.orm_default');
    $view = $container->get('Zend\View\Renderer\PhpRenderer');
    $entityManager = $container->get('doctrine.entitymanager.orm_default');
    return new $requestedName($entityManager, $auth, $view);
}
在我的行动中,我是如何做到这一点的?你用谷歌搜索了吗

这样实施:

在配置中注册您的新模板或任何您想要的模板

'view_manager' => [
    'template_map' => [
        'layout/layout' => __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'view' . DIRECTORY_SEPARATOR .
            'layout' . DIRECTORY_SEPARATOR . 'layout.phtml',
        'layout/second-layout' => __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'view' . DIRECTORY_SEPARATOR .
            'layout' . DIRECTORY_SEPARATOR . 'second-layout.phtml',
    ],
    'template_path_stack' => [
        __DIR__ . DIRECTORY_SEPARATOR .'..' . DIRECTORY_SEPARATOR . 'view',
    ],
],
在操作中应用模板

public function indexAction() 
{    
    // Use a different view template for rendering the page.
    $viewModel = new ViewModel();
    $viewModel->setTemplate('layout/second-layout');
    return $viewModel;
}