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