这是我的代码:
$renderer = new \Zend\View\Renderer\PhpRenderer();
$resolver = new \Zend\View\Resolver\TemplatePathStack(array(
'script_paths' => array(
'/module/B2bCore/view/b2b-core/std-email')));
$renderer->setResolver($resolver);
$view = new \Zend\View\Model\ViewModel();
$view->setTemplate("{$this->template}.phtml")->setTerminal(true);
$content = $renderer->render($view);
这会引发错误。例如,当$ this->模板的值为org/invite.phtml
时,我得到以下内容:
Zend\View\Renderer\PhpRenderer::render: Unable to render template "org/invite.phtml"; resolver could not resolve to a file
我的文件路径和名称如下:
/module/B2bCore/view/b2b-core/std-email/org/invite.phtml
我看到手册中的示例使用__DIR__
魔术常量指定脚本路径。我宁愿远离这个并引用应用程序根目录(根据示例模块index.php文件设置)的所有内容。我认为上面的配置符合这一点,但它仍然不起作用。
答案 0 :(得分:2)
您不应该在ZF2模块中编写与应用程序相关的路径。
在您的示例中,"/module..."
被识别为绝对路径(以/
开头),而realpath()
显然会将其缩小为false
,这就是您看到的原因一条异常消息,告诉您有关"org/invite.phtml"
的信息。
由于您的包/模块包含要呈现的视图,因此您应始终使用__DIR__
来引用它们,因为您不知道应用程序的路径是什么(来自"供应商"透视)。
您的视图解析器可能应该使用以下内容进行实例化(调整路径):
$resolver = new \Zend\View\Resolver\TemplatePathStack([
'script_paths' => [
__DIR__ . '/../../view/b2b-core/std-email'
]
]);