0

我正在编写本教程。我已按照所有步骤创建目录结构、控制器、module.php 和 module.config.php,但是当我打开时http://zf2-tutorial/album出现以下错误:

 Fatal error: Uncaught exception 'Zend\View\Exception\RuntimeException' with message 'Zend\View\Renderer\PhpRenderer::render: Unable to render template "album/album/index"; resolver could not resolve to a file' in /var/www/zf2-tutorial/vendor/zendframework/zendframework/library/Zend/View/Renderer/PhpRenderer.php:461

我在 view/album/album 目录中创建了一个名为index.phtml内部模块目录的文件。

module.config.php

return array(
    'controllers' => array(
        'invokables' => array(
            'Album\Controller\Album' => 'Album\Controller\AlbumController',       
        ),
        'view_manager' => array(
            'template_map' => array(
            'layout/layout'           => __DIR__ . '/../view/layout/layout.phtml',
            'album/album/index' => __DIR__ . '/../view/album/album/index.phtml',
            'error/404'               => __DIR__ . '/../view/error/404.phtml',
            'error/index'             => __DIR__ . '/../view/error/index.phtml',
                ),
            'template_path_stack' => array(
                'album' => __DIR__ . '/../view',
            )
        )
    ),

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

);

怎么了?

4

12 回答 12

6

PhpRenderer 对象正在抱怨,因为它找不到视图 phtml 文件。

文件是否module/Album/view/album/album/index.phtml存在?如果不是,那么这可能是原因。

于 2012-12-06T16:40:23.823 回答
4

检查您是否在module.config.php文件中为view_manager提供了正确的参数或嵌套

于 2013-06-20T06:21:57.450 回答
2

我遇到了同样的问题。我已经更改了文件 module.config.php 的以下行,存在于文档中,

'view_manager' => array(
  'template_path_stack' => array(
  'album' => __DIR__ . '/../view',
  ),
),

'view_manager' => array(
  'template_path_stack' => array(
  'album' => __DIR__ . '/../src/view',
  ),
),

只需在视图文件夹前面添加 src 文件夹名称。

像这样,您需要在所有视图路径之前添加“src”文件夹名称。

于 2013-09-17T14:22:18.263 回答
1

你应该返回一个类似的view对象IndexController

$view = new ViewModel(array('albums' => $this->getAlbumTable()->fetchAll(),));
$view->setTemplate("album/album/index/index.phtml");
return $view;

而不是直接返回

return array('albums' => $this->getAlbumTable()->fetchAll(),);
于 2015-01-27T09:05:09.560 回答
0

Album\config\module.config.php 中不再有“家”路线,所以

有必要将 ..\module\Album\view\layout\layout.phtml 中的 'H/home' 替换为 'A/album'

于 2013-10-05T09:10:00.590 回答
0

确保在module.config.phpview_manager内的template_map数组中使用正斜杠而不是反斜杠

于 2013-06-20T06:34:07.737 回答
0

除此之外,您需要在 module.config.php 中的 routes 数组中添加 2 件事,并将其放在代码下方

'home' => array(
                'type' => 'Zend\Mvc\Router\Http\Literal',
                'options' => array(
                    'route'    => '/',
                    'defaults' => array(
                        'controller' => 'Album\Controller\Album',
                        'action'     => 'index',
                    ),
                ),
        ),

和翻译器数组以及语言文件夹

'translator' => array(
    'locale' => 'en_US',
    'translation_file_patterns' => array(
        array(
            'type'     => 'gettext',
            'base_dir' => __DIR__ . '/../language',
            'pattern'  => '%s.mo',
        ),
    ),
),
于 2013-09-12T11:34:26.150 回答
0

你的 view_manager 放错地方了。它应该在“控制器”和“路由器”级别,而不是在“控制器”内。查看 Application 模块中的 module.config.php 并查看差异。

于 2013-04-16T13:14:29.157 回答
0

我已经用相册模块检查了你的代码。一切都很好。您可能对 htaccess 文件有疑问。请检查。

于 2013-01-04T12:12:16.120 回答
0

就我而言,问题在于视图文件名。我将其命名index.phpindex.phtml.

于 2014-01-26T12:33:29.887 回答
0

有同样的问题,我没有创建空视图文件模块/Album/view/album/album/index.phtml module/Album/view/album/album/add.phtml module/Album/view/album/album/edit .phtml 模块/专辑/视图/专辑/专辑/delete.phtml

于 2014-12-26T08:02:21.173 回答
0

检查您的 application.config.php 模块名称是否是“专辑”而不是“专辑”更改

'template_path_stack' => array(
    'album' => __DIR__ . '/../view', => //to 'Album' => __DIR__ . '/../view',
),
于 2016-08-18T19:56:48.553 回答