zend控制器奇怪的问题

时间:2013-03-07 07:47:16

标签: php zend-framework model-view-controller zend-controller

我在控制器级别处理异常时遇到问题。基本上我有一个控制器说FOO控制器,abcAction和另一个控制器BOO与xyz动作。现在我必须在abc中调用xyz,我必须使用它的输出。在abc中我们正在调用其他一些我们抛出Exception的api。在abc中,我们使用try catch处理这些排除,并且代码在没有重新编写视图之后正在执行。空白页即将来临。

代码

class FooController extends Zend_Controller_Action {
   function abcAction(){
        //some code here
        //no based on the parameters we are calling other action
        $view = new Zend_View();    
        try{
            $view->action('xyz','Boo','',$params);
        }catch(Exception $e){
            //handling exception
        }

    }
}

class BooController extends Zend_Controller_Action {
   function xyzAction(){
        //some code here
        //calling other api where we are throwing exception if some conditions are not met and normally my error controller will handle it.
    }
}

每当我们抛出异常时,我们都会得到空白页面。所以我用$ this-> _helper-> actionStack()替换了那个视图对象 现在它正在渲染错误控制器phtml和我的abcaction phtml。

如何摆脱这个?有什么其他方法可以在其他动作中调用动作吗?

1 个答案:

答案 0 :(得分:1)

对于ZF1,ActionStack动作助手是正确的方法。您遇到的问题是,这将再次运行调度循环,并且当发生异常时,错误控制器是该循环的一部分。

我怀疑如果abc抛出异常,你不需要将xyz添加到actionstack中。

正如您最初使用zend-framework2标记此问题一样,Forward控制器插件是在ZF2中执行此操作的方法。