如何在zf2 AbstractRestfulController中调用模板文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在zf2 AbstractRestfulController中调用模板文件相关的知识,希望对你有一定的参考价值。

我试图在Zend Framework 2.5 AbstractRestfulController中渲染模板文件,但代码中有错误或缺失。我能做什么 ?

控制器代码

使用Zend View Model ViewModel;

class trial extends AbstractRestfulController{

        public function DetailTalktrackAction(){

            $view = new ViewModel();
            $view->setTemplate('api/trial/specialty_talktrack');
            $view->setTerminal(true);
            $html = $this->getServiceLocator()->get('viewrenderer')->render($view);
            echo $html;
            exit;

        }

}

模块文件夹

- Api
-- config
-- src
--- Api
---- Controller
----- TrialController.php
-- view
--- api
--- trial
---- specialty_talktrack.phtml

错误

 "class": "Zend\View\Exception\RuntimeException",
 "file": "/opt/lampp/htdocs/crush/phase2/vendor/zendframework/zend-view/src/Renderer/PhpRenderer.php",
 "line": 494,
 "message": "Zend\View\Renderer\PhpRenderer::render: Unable to render template "api/trial/specialty_talktrack"; resolver could not resolve to a file"
答案

1)template_map

您的模板文件应该在密钥view_manager中的template_map配置中定义。你可以在这个in the documentation for ZendView上阅读更多信息。

//...
'view_manager' => array(
     'template_map' => array(
         'api/trial/specialty_talktrack' => ...path to your file...
     )
),
//...

来自ZendView文档:

TemplateMapResolver允许您直接将模板名称映射到特定模板。以下地图将提供主页模板(“应用程序/索引/索引”)的位置,以及布局(“布局/布局”),错误页面(“错误/索引”)和404页面(“错误/ 404“),解析它们以查看脚本。

    'template_map' => array(
        'application/index/index' => __DIR__ . '/../view/application/index/index.phtml',
        'site/layout'             => __DIR__ . '/../view/layout/layout.phtml',
        'error/index'             => __DIR__ . '/../view/error/index.phtml',
        'error/404'               => __DIR__ . '/../view/error/404.phtml',
    ),

2)template_path_stack

你也可以检查the example from the ZF2 album application tutorial在哪里设置template_path_stack,就像一个默认文件夹,用于搜索模板文件。如果要默认搜索视图文件夹中的视图,可以将此路径添加到template_path_stack,如下所示:

'view_manager' => array(
     'template_path_stack' => array(
         'Api' => __DIR__ . '/../view',
     ),
 ),

来自ZendView文档:

TemplatePathStack采用一系列目录。然后以LIFO顺序(它是一个堆栈)搜索目录,以查找所请求的视图脚本。这是快速应用程序开发的一个很好的解决方案,但由于需要静态调用的数量,可能会在生产中引入性能开销。

以下内容添加了一个指向当前模块的视图目录的条目。确保模块之间的密钥不同,以确保它们不会被覆盖 - 或者只是省略密钥!

    'template_path_stack' => array(
        'application' => __DIR__ . '/../view',
    ),

以上是关于如何在zf2 AbstractRestfulController中调用模板文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ZF2 中将 ServiceManager 的实例放入模型中

如何在 ZF2 中启用显示全局标签取消 FormMultiCheckbox?

如何在 zf2 中设置 2 个导航?

ZF2中的Zend Db如何控制事务?

如何通过 ZF2 FormElementManager 将 Doctrine ObjectManager 传递给表单

如何在zf2 AbstractRestfulController中调用模板文件