zend 2:无法渲染模板...解析器无法解析为文件

时间:2014-02-28 14:45:06

标签: zend-framework2

我正在经历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',
        ),
    ),
);

2 个答案:

答案 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将无法跟踪视图文件并进行渲染。