1

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);

テンプレートとそれが呼び出されるビューページは、同じファイルに保存されます。どこかにlistingsPartialテンプレートをリストする必要があるかどうか疑問に思いました。つまり、モジュールまたは構成ファイルにありますか?

私のディレクトリ構造は次のようになります。

> zf2  
   -module   
         -moduleName    
            -view
>              -moduleName
>                 -controllerName
>                     - *the view file and partial template file are stored here-*

任意の提案をいただければ幸いです。

4

2 に答える 2

6

完全に修飾されたパスを提供する代わりに(面倒な場合があります)、次の2つのいずれかを実行できます。

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つの場所に整理するため、私はオプション2を好みます。

于 2012-12-02T07:25:04.083 に答える
1

私のコメントで推測したように、エラーメッセージがテンプレートファイルを単に見つけることができないことを示した問題。

テンプレートファイルを常に内部にロードできるようにするpartialLoop()には、ビューフォルダに基づいた完全修飾パスを常に使用してください。したがって、正しい使用法は次のようになります

$this->partialLoop('Modulename\Controllername\Templatefile.phtml', $model);
于 2012-12-01T13:12:33.683 に答える