2012-09-01 3 views
3

ViewModel에 대한 특정 템플릿을 설정하는 방법을 알고 있습니다. 그러나 ViewModel에서 템플릿을 설정하기 전에 다른 템플릿이 현재 템플릿 경로 스택에 실제로 존재하는지 어떻게 확인할 수 있습니까? 아이디어는 쿼리 매개 변수를 기반으로보기를 렌더링하기 위해 단일 작업을 다시 사용할 수 있다는 것입니다. 먼저보기를 원한다면보기가 존재하지 않는 경우 일반 서버 오류 메시지 대신 404 응답 상태 코드를 설정할 수 있습니다.ZF2 뷰 템플릿이 있는지 확인하는 방법은 무엇입니까?

답변

15

당신이보기를 확인하려면 당신이 컨트롤러

$template = 'non/existant/template'; 
    $resolver = $this->getEvent() 
     ->getApplication() 
     ->getServiceManager() 
     ->get('Zend\View\Resolver\TemplatePathStack'); 

    if (false === $resolver->resolve($template)) { 

     // does not exist 
    } 
+0

우수! 이것이 제가 찾던 것입니다. 감사 –

6

에서하고 싶지 가정, 다음과 같은 작업을 수행 할 수는 다른보기 (아마도이 ​​부분로드) 당신이

을 사용할 수 있습니다에서 존재 당신이 ZF2Twig를 사용하는 경우
<?php if ($this->resolver('layouts/default')) : ?> 
    <?php $this->render('layouts/default'); ?> 
<?php endif; ?> 

Test that a view exists in ZF2

0

이 있어야한다 :

$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 
} 
관련 문제