【问题标题】:Zend 1 - Render another controller from a controllerZend 1 - 从一个控制器渲染另一个控制器
【发布时间】:2015-10-25 06:29:36
【问题描述】:

我正在尝试更改我们当前的布局,以通过 AJAX 请求控制器内容,而不是在用户每次单击菜单的任何项目时重新加载页面。长话短说:我需要从另一个控制器加载一个控制器。假设我有一个名为 AjaxController.php 的控制器,它将接收需要通过 POST 呈现的控制器和操作,并且需要在没有布局的情况下返回请求的控制器 HTML 响应。

现在我在控制器上只有以下代码:

class AjaxhelperController extends Default_Model_Views_Basic
{
    protected $_redirector = null;

    public function init()
    {
        $this->_redirector = $this->_helper->getHelper('Redirector');
    }

    public function indexAction() {
        $valor = $this->_request->getParam('valor');                                    
        $this->disableLayout();
        $this->_helper->viewRenderer->setNoRender();            
        $this->_redirector->gotoUrl('http://desarrollo.techmaker.net/eloy/svn/eplanv30/public/demo_eplan_profesional/gestordocumental/gestordocumental');
    }
} 

问题是它重定向到页面但加载了完整的布局,我需要在没有布局的情况下加载它。有什么方法可以做到这一点而无需更改每个控制器逻辑?

【问题讨论】:

    标签: php ajax zend-framework controller frameworks


    【解决方案1】:

    要在不重新加载页面的情况下从当前控制器渲染另一个控制器,您可以使用 _forward() 方法:

    _forward($action, $controller = null, $module = null, array $params = null):执行另一个动作。

    它将从另一个控制器运行另一个动作。请参阅以下内容的详细信息: http://framework.zend.com/manual/1.12/en/zend.controller.action.html

    【讨论】:

    • 我设法通过Redirector 助手来做到这一点(请参阅我的编辑问题)。现在的问题是它加载了渲染的完整布局。
    猜你喜欢
    • 2011-04-23
    • 2015-07-31
    • 2014-05-28
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多