我知道如何为 ViewModel 设置特定的模板。但是,在 ViewModel 中设置模板之前,如何检查当前模板路径堆栈中是否确实存在不同的模板?这个想法是我可以重用单个操作来基于查询参数呈现视图。我想先检查一下,如果视图不存在,那么我可以将响应状态代码设置为 404 而不是通用服务器错误消息。
			
			4482 次
		
3 回答
            17        
        
		
您可以执行以下操作,假设您想从控制器执行此操作
    $template = 'non/existant/template';
    $resolver = $this->getEvent()
        ->getApplication()
        ->getServiceManager()
        ->get('Zend\View\Resolver\TemplatePathStack');
    if (false === $resolver->resolve($template)) {
        // does not exist
    }
于 2012-09-01T11:23:06.493   回答
    
    
            7        
        
		
如果您想从另一个视图检查视图是否存在(也许您正在加载部分视图),您可以使用
<?php if ($this->resolver('layouts/default')) : ?>
    <?php $this->render('layouts/default'); ?>
<?php endif; ?>
于 2012-09-06T20:18:45.310   回答
    
    
            0        
        
		
如果您使用的是 ZF2Twig,它应该是:
$template = "non/existant/twig-template";
/** @var \ZfcTwig\View\TwigResolver $resolver */
$resolver = $this->getServiceLocator()->get('ZfcTwig\View\TwigResolver');
if (false === $resolver->resolve($template)) {
    // Twig template does not exist
}
于 2015-09-30T13:31:45.543   回答