我尝试在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"
答案 0 :(得分:3)
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',
),
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',
),