確認する必要がある構造と構文は次のとおりです
-yiiroot
-!-!protected
-!-!-!controllers
-!-!-!-!TestController.php
-!-!themes
-!-!-!themeName (it was the one that you have set on config file)
-!-!-!-!views
-!-!-!-!-!layouts
-!-!-!-!-!-!main.php // It would be default what if public $layout has not been overwriten or the layout file which has been set was not found
-!-!-!-!-!test
-!-!-!-!-!-!viewName.php
コントローラ上TestController
controllerrenderPartial()
でメソッドによってページを直接レンダリングした場合、確実にレイアウト テンプレートを取得することはできません。
render()は一般に、ユーザーがアプリケーションで「ページ」として見るものに対応するビューをレンダリングするために使用されます。最初に指定したビューをレンダリングし、次に現在のコントローラー アクション (該当する場合) のレイアウトをレンダリングし、最初のレンダリングの結果をレイアウトに配置します。次に、出力処理 (この時点では、必要なタグを自動的に挿入し、動的コンテンツを更新することを意味します) を実行し、最終的に結果を出力します。
renderPartial()は一般に、ページの「断片」をレンダリングするために使用されます。render() との主な違いは、このメソッドがレンダリングの結果をレイアウトに配置しないことです。デフォルトでは、出力処理も実行しませんが、$processOutput パラメーターを使用してこの動作をオーバーライドできます。
renderFile()は、レンダリングの面倒な作業を行う低レベルのメソッドです。現在のスコープでデータ変数を抽出し、ビュー コードを実行します。他の 2 つのメソッドはこれを内部的に呼び出しますが、実際には自分で呼び出す必要はありません。その場合は、(ビュー パスではなく) ファイル パスを渡す必要があることに注意してください。
参考:レンダリング関数のYiiの違い