2009-09-11 81 views
1

我在symfony项目中做了一个AJAX调用,所以它有一个'js'的sf_format。在actionSuccess.js.php视图中,我调用get_partial更新页面上的内容。默认情况下,由于sf_format仍然设置为'js',所以它会查找'js'格式的部分。是否有可能重写sf_format,以便它使用我已有的常规'html'部分(这样我就不必具有两个相同的部分)?Symfony - 在调用get_partial时覆盖sf_format

回答

3

我有类似的问题。

我查看了代码,get_partial没有给你任何范围来改变查找的格式......猜你可以修改代码,如果你需要的话可以修改代码。

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

到控制器中做到这一点:

$request->setRequestFormat('html'); 

或视图

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

在这两种情况下,如果要将此回来之后,你可以检索使用getRequestFormat现有值()。

+3

太棒了,本!谢谢!我在视图中设置了请求格式,调用$ sf_request-> setRequestFormat('html')而不是使用$ sf_context实际上更简单。 – deadwards 2009-09-18 14:55:10

+0

嗯,我的坏,$ sf_request帮手是一个整洁的捷径,忘记了。 – benlumley 2009-10-02 11:28:44

2

如果您正在寻找更可持续的解决方案,您可以听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'); 
}