首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在zf2 AbstractRestfulController中调用模板文件

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

Stack Overflow用户
提问于 2016-11-14 11:13:30
回答 1查看 507关注 0票数 2

我试图在ZendFramework2.5 AbstractRestfulController中呈现模板文件,但代码中出现了错误或遗漏了一些东西。我能做些什么?

控制器代码

使用Zend\View\Model\ViewModel;

代码语言:javascript
复制
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;

        }

}

模块文件夹

代码语言:javascript
复制
- Api
-- config
-- src
--- Api
---- Controller
----- TrialController.php
-- view
--- api
--- trial
---- specialty_talktrack.phtml

误差

代码语言:javascript
复制
 "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"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-14 11:34:02

1) template_map

您的模板文件应该在view_manager配置中定义在键template_map中。您可以在此Zend\View上阅读更多内容。

代码语言:javascript
复制
//...
'view_manager' => array(
     'template_map' => array(
         'api/trial/specialty_talktrack' => ...path to your file...
     )
),
//...

来自Zend\View文档:

TemplateMapResolver允许您直接将模板名映射到特定的模板。以下地图将提供主页模板("application/index/index")以及布局(“布局/布局”)、错误页(“错误/索引”)和404页(“错误/404”)的位置,并将其解析为查看脚本。

代码语言:javascript
复制
    '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

您还可以检查ZF2相册应用程序教程中的示例设置template_path_stack的位置,这就像用于搜索模板文件的默认文件夹一样。如果要在默认情况下搜索视图文件夹中的视图,可以将此路径添加到template_path_stack中,如下所示:

代码语言:javascript
复制
'view_manager' => array(
     'template_path_stack' => array(
         'Api' => __DIR__ . '/../view',
     ),
 ),

来自Zend\View文档:

TemplatePathStack接受一个目录数组。然后按照LIFO顺序(它是一个堆栈)搜索请求的视图脚本的目录。对于快速应用程序开发来说,这是一个很好的解决方案,但是由于所需的静态调用的数量,这可能会在生产中引入性能开销。 下面添加一个指向当前模块的视图目录的条目。确保您的密钥在模块之间不同,以确保它们不会被覆盖--或者简单地忽略键!

代码语言:javascript
复制
    'template_path_stack' => array(
        'application' => __DIR__ . '/../view',
    ),
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40587419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档