我知道如何为ViewModel设置特定的模板。但是,在ViewModel中设置模板之前,我如何检查当前模板路径堆栈中是否真的存在不同的模板?其想法是,我可以重用单个操作来基于查询参数呈现视图。我想先检查一下,这样如果视图不存在,我就可以将响应状态代码设置为404,而不是一般的服务器错误消息。
您可以执行以下操作,假设您想从控制器执行此操作
$template = 'non/existant/template';
$resolver = $this->getEvent()
->getApplication()
->getServiceManager()
->get('ZendViewResolverTemplatePathStack');
if (false === $resolver->resolve($template)) {
// does not exist
}
如果你想从另一个视图检查一个视图是否存在(也许你正在加载一个部分),你可以使用
<?php if ($this->resolver('layouts/default')) : ?>
<?php $this->render('layouts/default'); ?>
<?php endif; ?>
测试ZF2 中是否存在视图
如果您使用ZF2Twig,它应该是:
$template = "non/existant/twig-template";
/** @var ZfcTwigViewTwigResolver $resolver */
$resolver = $this->getServiceLocator()->get('ZfcTwigViewTwigResolver');
if (false === $resolver->resolve($template)) {
// Twig template does not exist
}