0

我被使用 1.0.17 版的 Symfony 应用程序困住了,目前无法升级。

现在有一个页面包含一个 iframe,它从同一模块加载不同操作的网页。iframe 也导致了一些设计问题和一些用户体验问题,所以我想摆脱它,直接在页面中呈现来自 iframe 的 HTML。

我只是不知道如何执行另一个动作并将视图模板呈现为我可以分配给调用动作视图的变量。

我已经尝试过getPresentationFor(),但这会导致调用页面上出现 404、异常或致命错误,具体取决于我的尝试方式。

我想我需要把代码放在execute动作的方法中。控制器是一个sfAction对象。如果我打电话$this->getController(),我会得到一个sfWebController对象。

来电:

$this->getController()->getPresentationFor('module', 'ContactIframeAction');

结果是空白页;该调用之后的任何代码都不会被执行,但如果我在它之前输出一些东西,我可以在页面上看到它。服务器错误日志中没有错误。

来电:

$this->getController()->getPresentationFor('module', 'ContactIframe');

只是导致我们的 404 页面显示,所以我认为之前的调用更接近我想要的。

有没有办法从另一个动作的代码呈现另一个动作的输出?

谢谢。

4

1 回答 1

1

大概是

$this->theContent = $this->getController()->getPresentationFor('module', 'contactIframe'); // minus 'c'

利用 :

// modules/mymodule/actions/actions.class.php
class myPageActions extends sfActions {

    public function executeIndex() {
        // ...
        $this->theContent = $this->getController()->getPresentationFor('module', 'contactIframe');                  
    }
}

// modules/mymodule/templates/indexSuccess.php
<?php echo $theContent ?>
于 2012-11-15T19:30:42.157 回答