【问题标题】:zend controller weird issueZend控制器奇怪的问题
【发布时间】:2013-03-07 07:47:15
【问题描述】:

我在控制器级别处理异常时遇到问题。基本上我有一个控制器说 FOO 控制器,abcAction 和另一个控制器 BOO 与 xyz 动作。现在我必须在 abc 中调用 xyz 并且我必须使用它的输出。在 abc 中,我们正在调用其他一些我们抛出异常的 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。

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

【问题讨论】:

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


    【解决方案1】:

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

    如果 abc 抛出异常,我怀疑您不需要将 xyz 添加到操作堆栈。

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

    【讨论】:

    • 我遇到了致命错误。方法“forward”不存在并且没有被困在 __call() 中。目前我们使用的是zend 1.6。
    • 一旦 xyz 被抛出异常,我会正确处理它,然后我必须执行一些代码,然后我必须渲染 abc phtml 文件。这里我遇到了问题。连同 abc phtml 。我的 errorcontroller phtml 文件也在渲染..我如何从调度循环中删除这个 execptions ?
    • 如果你没有从 action 方法中泄漏异常,我不知道调度循环是如何知道它发生的。
    猜你喜欢
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多