Кто-нибудь знает, где хранить файл шаблона частичного цикла 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);
Страница шаблона и просмотра, на которой она вызывается, хранится в том же файле. Я задавался вопросом, нужно ли мне перечислять листинговые шаблоны где-нибудь, т.е. в модуле или в файлах конфигурации?
Моя структура каталогов выглядит так:
> zf2 -module -moduleName -view > -moduleName > -controllerName > - *the view file and partial template file are stored here-*
Любые предложения оценили.
Как я уже догадался с моим комментарием, проблема в сообщении об ошибке указывала, что шаблонный файл просто не может быть найден.
Чтобы иметь возможность загружать файл шаблона внутри partialLoop()
всегда используйте полный путь, основанный на папке просмотра. Поэтому правильное использование выглядит
$this->partialLoop('Modulename\Controllername\Templatefile.phtml', $model);
В качестве альтернативы предоставлению полного пути, который может быть громоздким, вы можете сделать одну из двух вещей:
1) Укажите путь к файлам шаблонов из файла module.config.php
например
'view_manager' => array( 'template_path_stack' => array( 'module' => __DIR__ . '/../view', 'partial' => __DIR__ . '/../view/moduleName\controllerName' ), )
2) Создайте каталог с именем partial
непосредственно в каталоге представлений. Поместите все ваши файлы шаблонов в этот каталог.
zf2 -module -moduleName -view -partial - partial template files -moduleName -controllerName - view files
Затем из вашего сценария просмотра вызовите частичный цикл следующим образом:
echo $this->partialLoop('partial/listingsPartial.phtml',$model);
Я предпочитаю вариант 2, поскольку он упорядочивает все ваши частичные файлы в одном месте.