我正在经历zend 2 getting started tutorial而我撞墙了。我正在教程中我的动作控制器通过indexAction()加载视图:
public function indexAction() {
return new ViewModel(array(
//$albums inside index.phtml will contain data from this method
'albums' => $this->getAlbumTable()->fetchAll()
));
}
但是在加载页面时我看到了这个错误:
Zend\View\Renderer\PhpRenderer::render: Unable to render template "album/album/index"; resolver could not resolve to a file
此时我意识到我不知道到底发生了什么。我甚至不知道从哪里开始排除此错误。在我扫描所有文件的拼写错误之前,我真的很想了解这个错误是如何发生的。
这是我的modul.config.php:
<?php
return array(
'controllers' => array(
'invokables' => array(
'Album\Controller\Album' =>
'Album\Controller\AlbumController',
),
),
'router' => array(
'routes' => array(
'album' => array(
'type' => 'segment',
'options' => array(
'route' => '/album[/:action][/:id]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'Album\Controller\Album',
'action' => 'index',
),
),
),
),
),
'view_manager' => array(
'template_path_stack' => array(
'ablum' => __DIR__ . '/../view',
),
),
);
答案 0 :(得分:9)
错误“无法呈现模板”相册/相册/索引“表示您必须在{Album'模块的index.phtml
目录下的/album/album
目录下添加view
文件。index.phtml
视图模板文件用于呈现index
模块的AlbumController
控制器的Album
操作的视图。由于此文件似乎缺失,视图模板解析器无法找到它。
在Zend Framework 2中,您将视图实现为模板文件,这是一个文件
有.phtml
扩展名(“phtml”代表PHP + HTML)。查看模板有这样的
一个名称,因为它们通常包含与使用的PHP代码片段混合的HTML代码
用于渲染网页。视图通常位于模块的 view 子目录中。
对于初学者,我建议您阅读Using Zend Framework 2本书。通过这本电子书,您可以节省学习ZF2的时间和精力。
答案 1 :(得分:2)
此外,路径区分大小写,即它应该全部为小写的album / index / index文件夹的名称和index.phtml,否则phpRenderer将无法跟踪视图文件并进行渲染。