有谁知道存储ZF2部分循环模板文件的位置?
我将模板存储在标准Zend文件结构下的相关视图文件夹中。这在ZF1下有效。但是在尝试重新编码代码以使用ZF2时,我得到了这个错误?
Fatal error: Uncaught exception 'Zend\View\Exception\RuntimeException' with message
'Zend\View\Renderer\PhpRenderer::render: Unable to render template
"listingsPartial.phtml"; resolver could not resolve to a file' in C:\zendProject\zf2\vendor\zendframework\zendframework\library\Zend\View\Renderer\PhpRenderer.php:454 Stack trace: #0 C:\zendProject\zf2\vendor\zendframework\zendframework\library\Zend\View\Helper\Partial.php(73):
Zend\View\Renderer\PhpRenderer->render('listingsPartial...') #1 C:\zendProject\zf2\vendor\zendframework\zendframework\library\Zend\View\Helper\PartialLoop.php(70): Zend\View\Helper\Partial->__invoke('listingsPartial...', Array) #2 [internal function]: Zend\View\Helper\PartialLoop->__invoke('listingsPartial...', Array) #3 C:\zendProject\zf2\vendor\zendframework\zendframework\library\Zend\View\Renderer\PhpRenderer.php(355):
call_user_func_array(Object(Zend\View\Helper\PartialLoop), Array) #4 C:\zendProject\zf2\module\Landlord\view\landlord\home\index.phtml(42):
Zend\View\Renderer\PhpRenderer->__call
('p in C:\zendProject\zf2\vendor\zendframework\zendframework\library\Zend\View\Renderer\PhpRenderer.php on line 454
我对部分循环的调用如下所示:
echo $this->partialLoop('listingsPartial.phtml',$model);
调用它的模板和视图页面存储在同一文件中。我想知道是否需要在某处列出listingPartial模板,即在模块或配置文件中?
我的目录结构如下所示:
> zf2
-module
-moduleName
-view
> -moduleName
> -controllerName
> - *the view file and partial template file are stored here-*
任何建议表示赞赏。
答案 0 :(得分:6)
作为提供完整合格路径的替代方法 - 这可能很麻烦 - 您可以做以下两件事之一:
1)从module.config.php
文件中提供模板文件的路径,如此
'view_manager' => array( 'template_path_stack' => array( 'module' => __DIR__ . '/../view', 'partial' => __DIR__ . '/../view/moduleName\controllerName' ), )
2)直接在partial
目录下创建一个名为view
的目录。将所有模板文件放在此目录中。
zf2
-module
-moduleName
-view
-partial
- partial template files
-moduleName
-controllerName
- view files
然后从你的视图脚本中调用你的部分循环:
echo $this->partialLoop('partial/listingsPartial.phtml',$model);
我赞成选项2,因为它将所有部分文件组织到一个位置。
答案 1 :(得分:1)
正如我的评论所猜测的那样,错误消息表明模板文件无法找到。
为了能够在partialLoop()
内加载模板文件,请始终使用基于view-folder的完全限定路径。所以正确的用法看起来像
$this->partialLoop('Modulename\Controllername\Templatefile.phtml', $model);