PartialとSlotの 2 つの概念は、私には同じように思えます。これら 2 つの機能はどちらも、テンプレート内のプレースホルダーを実際のマークアップに置き換えます。
いつPartialを使用し、いつSlotを使用する必要がありますか?
スロットとパーシャルの主な違いは、特定のスロットのレンダリングが特定のテンプレート内に存在することです。反対に、パーシャルはテンプレートを別のテンプレートにインクルードするだけです。
「基本的に、スロットは任意のビュー要素(レイアウト、テンプレート、または部分) に配置できるプレースホルダーです。このプレースホルダーに入力することは、変数を設定するのと同じです。入力コードは、応答にグローバルに保存されます。 , そのため、どこでも定義できます (レイアウト、テンプレート、または部分). スロットを含める前に必ずスロットを定義し、レイアウトはテンプレートの後に実行されることを覚えておいてください (これは装飾プロセスです)パーシャルは、テンプレートで呼び出されたときに実行されます。」
それぞれの使用方法の例は次のとおりです。
それが少し明確になったことを願っています。
パーシャルはファイルから取得されます:
include_partial('thing', $params)
_thing.php
そのスコープに $paramsを含めます。
スロットはファイルではありませんが、テンプレート/コントローラーの別の場所に設定されています。
slot('title', 'Home Page');
echo '<title>'.slot('title').'</title>'
知っておく必要があるのは、Symfony チート シートビューだけです。パーシャル、コンポーネント、スロット、およびコンポーネント スロット(PDF、45 KB)。
スロットは OO メソッド定義と考えることができます。レイアウトによってスロットが定義されます。テンプレートはレイアウトを拡張し、(メソッドを上書きすることによって) それらのスロットを埋めます。上書きされていないときに表示される、スロットのデフォルトのコンテンツを持つこともできます。
一方、パーシャルはコンポジションのようなものです。これらは、テンプレートがアクセスできる再利用可能なコンポーネントです。大まかに言えば、それらは単純なステートメントと同等ですが、include
使用する変数を渡します。
このページは、概念を説明するのにかなり良い仕事をしています: http://www.symfony-project.org/book/1_2/07-Inside-the-View-Layer