Отличие renderPartial от getPartial в Symfony

Symfony framework

Автор: Александр Степанов

5 февр. 2013 г., 10:44:58  1381


Исходный код обоих методов

// sfAction.class.php
public function renderPartial($templateName, $vars = null)
{
  return $this->renderText($this->getPartial($templateName, $vars));
}
...
...
 
public function getPartial($templateName, $vars = null)
{
  $this->getContext()->getConfiguration()->loadHelpers('Partial');
  
  $vars = !is_null($vars) ? $vars : $this->varHolder->getAll();
 
  return get_partial($templateName, $vars);
}

Видно что getPartial($templateName, $vars = null) как раз возвращает обработанный шаблон (partial) как строку, которую потом можно записать в переменную и использовать, например, в формировании письма для рассылки. Второй же метод renderPartial($templateName, $vars = null) использует первый и добавляет его прямо в response, применять широко можно в ajax-запросах. Классическая ситуация: у вас есть partial, который формирует какой-то html, из переданных ему переменных. Action, который обрабатывает ajax-запрос должен возвращать что-то типа такого:

// apps/frontend/modules/module/actions/actions.class.php
...
public function executeList()
{
  ...
  return $this->renderPartial('ajaxlist', array('itemlist' => $itemlist, ...));
}