Symfony - 调用get_partial时覆盖sf_format

时间:2009-09-11 18:38:19

标签: php symfony1

我正在我的symfony项目中进行AJAX调用,因此它的sf_format为'js'。在actionSuccess.js.php视图中,我调用get_partial来更新页面上的内容。默认情况下,它会以'js'格式查找部分,因为sf_format仍然设置为'js'。是否有可能覆盖sf_format,以便它使用我已经拥有的常规'html'部分(这样我就不必有两个相同的部分)?

2 个答案:

答案 0 :(得分:3)

我遇到了类似的问题。

我查看了代码,并且get_partial没有给你任何改变所查找格式的空间...猜你可以修改代码,以便在需要的时候实现。

我改为转换请求格式 - 在我看来也不理想。但比编辑symfony文件更好。

要在控制器中执行此操作:

$request->setRequestFormat('html');

或在视图中

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

在这两种情况下,如果您想在之后重新设置,可以使用getRequestFormat()检索现有值。

答案 1 :(得分:2)

如果您正在寻找更具可持续性的解决方案,您可以收听view.configure_format并在您的appflication配置中设置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');
}