3

PartialSlotの 2 つの概念は、私には同じように思えます。これら 2 つの機能はどちらも、テンプレート内のプレースホルダーを実際のマークアップに置き換えます。

いつPartialを使用し、いつSlotを使用する必要がありますか?

4

4 に答える 4

4

スロットとパーシャルの主な違いは、特定のスロットのレンダリングが特定のテンプレート内に存在することです。反対に、パーシャルはテンプレートを別のテンプレートにインクルードするだけです。

「基本的に、スロットは任意のビュー要素(レイアウト、テンプレート、または部分) に配置できるプレースホルダーです。このプレースホルダーに入力することは、変数を設定するのと同じです。入力コードは、応答にグローバルに保存されます。 , そのため、どこでも定義できます (レイアウト、テンプレート、または部分). スロットを含める前に必ずスロットを定義し、レイアウトはテンプレートの後に実行されることを覚えておいてください (これは装飾プロセスです)パーシャルは、テンプレートで呼び出されたときに実行されます。」

それぞれの使用方法の例は次のとおりです。

  • ページのタイトル - おそらくスロット (またはタイトル ヘルパー) に配置され、レイアウトでスロットが定義されているかどうかを確認してから表示します。
  • サイドバー アイテム- 3 つのサイドバー "スロット" があるとします。たとえば、"sidebar-1"、"sidebar-2"、"sidebar-3" のように 3 つのスロットがあります。テンプレートで、必要に応じて部分 (またはコンポーネント) を使用してレンダリングできるスロットを定義します。

それが少し明確になったことを願っています。

于 2010-07-18T15:01:59.380 に答える
3

パーシャルはファイルから取得されます:

include_partial('thing', $params)_thing.phpそのスコープに $paramsを含めます。

スロットはファイルではありませんが、テンプレート/コントローラーの別の場所に設定されています。

slot('title', 'Home Page');
echo '<title>'.slot('title').'</title>'

于 2010-07-17T14:57:51.073 に答える
2

知っておく必要があるのは、Symfony チート シートビューだけです。パーシャル、コンポーネント、スロット、およびコンポーネント スロット(PDF、45 KB)。

于 2010-07-23T09:55:17.897 に答える
1

スロットは OO メソッド定義と考えることができます。レイアウトによってスロットが定義されます。テンプレートはレイアウトを拡張し、(メソッドを上書きすることによって) それらのスロットを埋めます。上書きされていないときに表示される、スロットのデフォルトのコンテンツを持つこともできます。

一方、パーシャルはコンポジションのようなものです。これらは、テンプレートがアクセスできる再利用可能なコンポーネントです。大まかに言えば、それらは単純なステートメントと同等ですが、include使用する変数を渡します。

このページは、概念を説明するのにかなり良い仕事をしています: http://www.symfony-project.org/book/1_2/07-Inside-the-View-Layer

于 2010-07-17T15:00:03.770 に答える