在与 ZF2 一起使用的基本示例应用程序中,IndexController 的编码如下:
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class IndexController extends AbstractActionController
{
public function indexAction()
{
return new ViewModel();
}
}
只有一个简单的 return 语句,其内容index.phtml
会自动包含在输出中。
我看到index.phtml
引用的唯一地方是\module\Application\config\module.config.php
'view_manager' => array(
'display_not_found_reason' => true,
'display_exceptions' => true,
'doctype' => 'HTML5',
'not_found_template' => 'error/404',
'exception_template' => 'error/index',
'template_map' => array(
'layout/layout' => __DIR__ . '/../view/layout/layout.phtml',
'application/index/index' => __DIR__ . '/../view/application/index/index.phtml',
'error/404' => __DIR__ . '/../view/error/404.phtml',
'error/index' => __DIR__ . '/../view/error/index.phtml',
),
'template_path_stack' => array(
__DIR__ . '/../view',
),
),
我试过评论这条线:
//'application/index/index' => __DIR__ . '/../view/application/index/index.phtml',
但是 index.phtml 仍然包含在输出中。
那么问题来了,为什么要包括在内?幕后发生了什么神奇的事情,使它仍然被包括在内?
在我看来,也许我错过了一些由 ZF2 处理的基本自动映射,我无法在文档中找到这些映射。但是如果有一些自动映射,为什么那条线存在于module.config.php
?