0

我正在渲染一个包含很多帧的页面(通过 dojo 的 XHR 内容窗格)。这是通过IndexController设置区域“header,left,right,center,footer”的请求来完成的,但该中心没有填充内容。这又是通过调用PaneControllermenu.onclick 来设置的。警告; 搜索引擎索引服务没有获取中心区域内容。如果用户通过/index/index 进入,我希望绕过中心的 AJAX 加载。

来自 IndexController 的相关片段:

class IndexController extends Zend_Controller_Action {
    public function indexAction() {
        $this->indexModel = $this->view->indexModel = new Application_Model_Index();

        // Goal is to render "/pane/main/" action and capture the HTML
        $this->view->mainPane = (string) $this->renderPaneMain();
        return $this->render();
    }
    public function renderPaneMain() {
        // ActionStack ?
        // action() ?
        return $HTML;
    }
}

窗格中的相关内容

class PaneController extends Zend_Controller_Action {

    public function preDispatch() {
        // will only return a contentpane, dont render layout 
        if ($this->getRequest()->isXmlHttpRequest()) {
            $this->_helper->layout()->disableLayout();
            $this->view->doLayout = true;
        }
    }
    public function mainAction() {
            this.render("main.phtml");
    }
    public function init() {
        $this->panesModel = new Application_Model_Panes();
        $variant = $this->getRequest()->getParam('variant', '');
            // routing variables need to be set, how?
        if (empty($variant))
            $this->_redirect('/');
    }
}

基本上,我需要 PaneController _not 渲染全局布局,而是调用它的 .phtml 视图文件,一旦它已经设置了相关的模型条目等。

关于如何以最有效的形式实现这一目标的任何想法?

4

1 回答 1

0

很好,请附上我在此处使用的解决方法

我已将表单和分叉逻辑转移到与 PanesController 共存的模型中。对于 IndexController,它将默认窗格显示为没有 AJAX 的内联 HTML - 有几个重复的初始化正在进行。

因此,IndexModel 扩展了 PanesModel - 无需对其进行初始化。在我的 index.phtml 视图(用于索引操作)中,我有以下代码来呈现窗格中的内联 html。

在索引控制器中

$this->view->model = new IndexModel(); // extends PanesModel
$this->view->model->setDefaultProperties($variant, $pagination, ...);

在索引视图中:

$this->partial("panes/main/main.phtml", array("model", $this->model);

并从窗格视图:

<?php if($this->model->goThisDirection()): ?>
     Switch 1 HTML contents
<?php endif; ?>

警告:我还必须不在窗格内呈现任何形式的布局(dojox contentpanes 允许<script><style>标记) - 这个 ofc 会影响我的任何其他窗格操作。

于 2012-08-09T14:16:45.940 回答