Symfony - переопределить sf_format при вызове get_partial

StackOverflow https://stackoverflow.com/questions/1412612

  •  06-07-2019
  •  | 
  •  

Вопрос

Я делаю AJAX-вызов в моем проекте Symfony, поэтому он имеет sf_format 'js'. В представлении actionSuccess.js.php я вызываю get_partial для обновления содержимого страницы. По умолчанию он ищет частичное в формате 'js', так как sf_format все еще установлен как 'js'. Можно ли переопределить sf_format, чтобы он использовал обычную частичку html, которая у меня уже есть (чтобы у меня не было двух одинаковых частичек)?

Это было полезно?

Решение

У меня была похожая проблема.

Я просмотрел код, и get_partial не дает никаких возможностей для изменения искомого формата ... думаю, вы могли бы изменить код, чтобы сделать это возможным, если вам нужно.

Я вместо этого пошел на переключение формата запроса - тоже, на мой взгляд, не идеально. Но лучше, чем редактировать файлы Symfony.

Для этого в контроллере:

$request->setRequestFormat('html');

или в представлении

$sf_context->getRequest()->setRequestFormat('html');

В обоих случаях, если вы хотите установить это значение позже, вы можете получить существующее значение, используя getRequestFormat ().

Другие советы

если вы ищете более устойчивое решение, вы можете прослушать view.configure_format и установить расширение sfPHPView в своей конфигурации приложения.

// in apps/api/config/apiConfiguration.class.php
public function configure() {
  $this->dispatcher->connect('view.configure_format', array($this, 'configure_formats'));
}

public function configure_formats(sfEvent $event) {
  // change extension, so our module templates and partials 
  // for xml do not need the .xml.php extension
  $event->getSubject()->setExtension('.php');
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top