如何检查ZF2视图模板是否存在?

Chr*_*man 3 zend-framework2

我知道如何为ViewModel设置特定模板.但是,在ViewModel中设置模板之前,如何检查当前模板路径堆栈中是否存在不同的模板?我的想法是,我可以重复使用单个操作来基于查询参数呈现视图.我想首先检查,如果视图不存在,那么我可以将响应状态代码设置为404而不是通用服务器错误消息.

And*_*den 16

假设您想从控制器执行此操作,则可以执行以下操作

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

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

        // does not exist
    }
Run Code Online (Sandbox Code Playgroud)


小智 7

如果你想检查另一个视图中存在的视图(也许你正在加载一个部分),你可以使用

<?php if ($this->resolver('layouts/default')) : ?>
    <?php $this->render('layouts/default'); ?>
<?php endif; ?>
Run Code Online (Sandbox Code Playgroud)

测试ZF2中是否存在视图