我在控制器级别处理异常时遇到问题。基本上我有一个控制器说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。
如何摆脱这个?有什么其他方法可以在其他动作中调用动作吗?
答案 0 :(得分:1)
对于ZF1,ActionStack动作助手是正确的方法。您遇到的问题是,这将再次运行调度循环,并且当发生异常时,错误控制器是该循环的一部分。
我怀疑如果abc抛出异常,你不需要将xyz添加到actionstack中。
正如您最初使用zend-framework2
标记此问题一样,Forward控制器插件是在ZF2中执行此操作的方法。