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

问题描述 投票:2回答:1

我试图在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"
php zend-framework zend-framework2 restful-architecture
1个回答
3
投票

1)template_map

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

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

来自Zend\View文档:

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',
     ),
 ),

来自Zend\View文档:

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

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

    'template_path_stack' => array(
        'application' => __DIR__ . '/../view',
    ),
© www.soinside.com 2019 - 2024. All rights reserved.