次の3つのレンダリング方法で混乱することがあります。
Controller::render()
Controller::renderPartial()
Controller::renderFile()
説明していただけませんか。ありがとうございました!
render()
通常、ユーザーがアプリケーションで「ページ」として表示するものに対応するビューをレンダリングするために使用されます。最初に指定したビューをレンダリングし、次に現在のコントローラーアクションのレイアウトをレンダリングし(該当する場合)、最初のレンダリングの結果をレイアウトに配置します。次に、出力処理(この時点では、必要なタグを自動的に挿入し、<script>
動的コンテンツを更新することを意味します)を実行し、最終的に結果を出力します。
renderPartial()
通常、ページの「一部」をレンダリングするために使用されます。との主な違いrender()
は、このメソッドはレンダリングの結果をレイアウトに配置しないことです。デフォルトでは、出力処理も実行されませんが、$processOutput
パラメーターを使用してこの動作をオーバーライドできます。
renderFile()
は、レンダリングの面倒な作業を行う低レベルのメソッドです。現在のスコープ内のデータ変数を抽出してから、ビューコードを実行します。他の2つのメソッドは内部でこれを呼び出しますが、実際には自分で呼び出す必要はありません。その場合は、(ビューパスではなく)ファイルパスを渡す必要があることに注意してください。
レンダリングファイル:
設定されたレンダリングエンジンを使用して、特定のファイルに対してレンダリングメソッドを実行します。これはYii内ではかなり低レベルであり、実際には内部またはコンソールコマンドでのみ使用されます。
部分的にレンダリング:
これにより、指定されたエイリアスが取得され、現在実行中のコントローラーやモジュール、エイリアス定義などのすべてのローカル変数を使用してファイルパスに変換されます。その後、ほとんどレンダリングファイルを使用します。
レンダリング:
これは、私たちの生活を楽にするためのレンダリングパーシャルの組み合わせです。現在アクティブなコントローラーまたは定義されたコントローラーでレイアウトをレンダリングし、その中のすべてのコンテンツをレンダリングし、レンダリングのキャッシュを処理し、クライアントスクリプトの出力を処理します。
それがそれをクリアすることを願っています。
renderPartial()は、ページにssiコンポーネント(ヘッダー、フッター、ウィジェットなど)を表示するのに非常に便利です。