2010-04-15 4 views
5

Почему я должен использовать компонент вместо действия, которое отображает частичное?Symfony: разница между Action + partial и компонентом

Если действия могут выдавать частичные, когда лучше использовать компоненты?

Дайте мне свет о нем ..

Хави

+2

действия не предназначены для визуализации партиалы. Используйте частичный, как «мини-шаблон», который стоит отдельно, и компонент как «мини-действие и шаблон». – Tom

ответ

7

компоненты используются, когда вы хотите включить какой-то блок в различных частях сайта (например, «Top 10 продаж» или что-то подобный) - для этого требуется некоторый код контроллера. Вы включаете вывод компонента в другой шаблон действия/частичный/другой компонент с помощью

include_component($module_name, $component_name, array('var1' => $var1));
действие должно быть вызвано непосредственно браузером, поэтому вы не можете включать его в другой шаблон (без какого-либо взлома) Подумайте о компонентах как многократно используемом блоке html, который может быть включен в любом месте, а также действиях, которые отображаются во всей странице, и отправляются в браузер.

+0

Спасибо, это то, что я искал: «Действие должно быть вызвано непосредственно браузером, поэтому вы не можете включать его в другой шаблон (без какого-либо взлома)». Но теперь мой вопрос: каково ваше мнение об удалении компонентов и добавлении способа включения действий (так же, как и компоненты) в шаблоны? Я «размышляю», прося об этом как о том, чтобы сделать symfony более простым. – ziiweb

+1

Вы бы запросили то, что уже существует - компоненты * точно * предназначены для включения «действий» в шаблоны. – Raise

+2

Это не очень хорошая идея для удаления компонентов, потому что они - легкая версия действий (они не проходят через систему маршрутизации, фильтры и т. Д., Поэтому они более эффективны на своей работе) – matei

5

partial является «шаблоном», который можно использовать повторно на любых страницах просмотра. его простой & быстро. все $ data должны быть переданы как параметр частичной. imo, должно быть предпочтительным, если это возможно.

Компонент подобен «шаблону со своим действием», который можно использовать повторно на любых страницах просмотра. более мощный, но медленнее по сравнению с частичным. использовать, если у вас есть парциальные, которые требуют бизнес-логики (т.е. действие/контроллер)

http://www.symfony-project.org/book/1_0/07-Inside-the-View-Layer#chapter_07_code_fragments

Смежные вопросы