В чем разница между частичным и игровым автоматом в Symfony? - PullRequest
3 голосов
/ 17 июля 2010

Два понятия Частичное и Слот кажутся мне одинаковыми. Обе эти две функции заменяют заполнители в шаблоне фактической разметкой.

Когда мне следует использовать Частично и когда мне следует использовать Слот ?

Ответы [ 4 ]

4 голосов
/ 18 июля 2010

Основное различие между слотами и частями заключается в том, что рендеринг для данного слота находится в определенном шаблоне. Напротив, частичное является просто включением шаблона в другой шаблон.

"По сути, слот - это заполнитель, который можно вставить в любой из элементов представления (в макете, шаблоне или части). Заполнение этого заполнителя аналогично установке переменной. Код заполнения хранится в ответе глобально, так что вы можете определить его где угодно (в макете, шаблоне или части). Просто убедитесь, что вы определили слот перед тем, как включить его, и помните, что макет выполняется после шаблона. (это процесс оформления), а частичные выполняются, когда они вызываются в шаблоне. "

Примеры способов использования каждого из них:

  • Заголовок для вашей страницы - вероятно, будет помещен в слот (или в помощник по заголовкам), и вы затем в своем макете проверите, определен ли слот, и затем покажете его.
  • Элементы боковой панели - скажем, у вас есть 3 "слота" на боковой панели, тогда у вас будет три слота, например, "sidebar-1", "sidebar-2" и "sidebar-3". Затем в своем шаблоне вы определяете слот, который можно визуализировать, используя частичный (или даже компонент), если хотите.

Надеюсь, это немного прояснилось.

3 голосов
/ 17 июля 2010

Часть приходит из файла:

include_partial('thing', $params) будет включать _thing.php с $ params в своей области действия.

Слоты не являются файлами, но установлены где-то еще в шаблоне /контроллер:

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

2 голосов
/ 23 июля 2010

Все, что вам нужно знать, это шпаргалка Symfony View. Частицы, компоненты, слоты и слоты для компонентов (PDF, 45 КБ).

1 голос
/ 17 июля 2010

Вы можете представить слот как определение метода ОО. Ваш макет определяет слоты. Шаблон расширяет макет и заполняет эти слоты (перезаписывая методы). Вы также можете иметь контент по умолчанию для слота, который отображается, если он не перезаписан.

Частицы, с другой стороны, будут похожи на композицию. Это многократно используемый компонент, к которому могут получить доступ шаблоны. Грубо говоря, они эквивалентны простому оператору include, но вы передаете переменные, которые он использует.

Эта страница довольно хорошо объясняет концепции: http://www.symfony -project.org / book / 1_2 / 07-Inside-the-View-Layer

...