Zend Framework 2 无法呈现视图,解析器无法解析为文件。为什么?
Zend Framework 2 fails to render view, resolver could not resolve to a file. Why?
出于学习目的,我试图从头开始在 Zend Framework 2 中创建一个模块,但我无法让它呈现视图。它总是抛出这个错误:
Zend\View\Renderer\PhpRenderer::render: Unable to render template "my-module/index/index"; resolver could not resolve to a file
我明白错误是什么意思:缺少与请求对应的视图文件,但我不明白为什么会发生这种情况 – 对我来说,一切都已就绪.可能我刚刚忽略了一些东西,但我似乎找不到它。
我的 module.config.php
看起来像这样:
<?php
return array(
'controllers' => array(
'invokables' => array(
'MyModule\Controller\IndexController' => 'MyModule\Controller\IndexController'
),
),
'router' => array(
'routes' => array(
'my-module' => array(
'type' => 'literal',
'options' => array(
'route' => '/my-module',
'defaults' => array(
'controller' => 'MyModule\Controller\IndexController',
'action' => 'index',
),
)
),
),
'view_manager' => array(
'template_path_stack' => array(
__DIR__ . '/../view',
),
),
),
);
我的视图位于 module/MyModule/view/my-module/index/index.phtml
。
我也试过 module/MyModule/view/my-module/index/index/index.phtml
,但我觉得那看起来不对,而且也行不通——为什么期望的视图在那里?我的配置或 file/folder 结构哪里错了 – 为什么框架找不到正确的视图文件?
也许也看看控制器:
namespace MyModule\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class IndexController extends AbstractActionController
{
public function indexAction()
{
return new ViewModel();
}
}
您的 view_manager
配置位置错误,您已将其放在 router
配置中,这意味着您的模板文件夹永远不会添加到堆栈中。移动钥匙...
<?php
return array(
'controllers' => array(
'invokables' => array(
'MyModule\Controller\IndexController' => 'MyModule\Controller\IndexController'
),
),
'router' => array(
'routes' => array(
'my-module' => array(
'type' => 'literal',
'options' => array(
'route' => '/my-module',
'defaults' => array(
'controller' => 'MyModule\Controller\IndexController',
'action' => 'index',
),
)
),
),
// view_manager config doesn't belong here
),
// correct place for view_manager config is here
'view_manager' => array(
'template_path_stack' => array(
__DIR__ . '/../view',
),
),
);
出于学习目的,我试图从头开始在 Zend Framework 2 中创建一个模块,但我无法让它呈现视图。它总是抛出这个错误:
Zend\View\Renderer\PhpRenderer::render: Unable to render template "my-module/index/index"; resolver could not resolve to a file
我明白错误是什么意思:缺少与请求对应的视图文件,但我不明白为什么会发生这种情况 – 对我来说,一切都已就绪.可能我刚刚忽略了一些东西,但我似乎找不到它。
我的 module.config.php
看起来像这样:
<?php
return array(
'controllers' => array(
'invokables' => array(
'MyModule\Controller\IndexController' => 'MyModule\Controller\IndexController'
),
),
'router' => array(
'routes' => array(
'my-module' => array(
'type' => 'literal',
'options' => array(
'route' => '/my-module',
'defaults' => array(
'controller' => 'MyModule\Controller\IndexController',
'action' => 'index',
),
)
),
),
'view_manager' => array(
'template_path_stack' => array(
__DIR__ . '/../view',
),
),
),
);
我的视图位于 module/MyModule/view/my-module/index/index.phtml
。
我也试过 module/MyModule/view/my-module/index/index/index.phtml
,但我觉得那看起来不对,而且也行不通——为什么期望的视图在那里?我的配置或 file/folder 结构哪里错了 – 为什么框架找不到正确的视图文件?
也许也看看控制器:
namespace MyModule\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class IndexController extends AbstractActionController
{
public function indexAction()
{
return new ViewModel();
}
}
您的 view_manager
配置位置错误,您已将其放在 router
配置中,这意味着您的模板文件夹永远不会添加到堆栈中。移动钥匙...
<?php
return array(
'controllers' => array(
'invokables' => array(
'MyModule\Controller\IndexController' => 'MyModule\Controller\IndexController'
),
),
'router' => array(
'routes' => array(
'my-module' => array(
'type' => 'literal',
'options' => array(
'route' => '/my-module',
'defaults' => array(
'controller' => 'MyModule\Controller\IndexController',
'action' => 'index',
),
)
),
),
// view_manager config doesn't belong here
),
// correct place for view_manager config is here
'view_manager' => array(
'template_path_stack' => array(
__DIR__ . '/../view',
),
),
);