This is a follow up question of this question, which is not really important.

I have written the following front controller plugin:

public function postDispatch(Zend_Controller_Request_Abstract $request)
{
    $response = $this->getResponse();
    $monitor = Zend_Registry::get('monitor');

    if ($response->isException())
    {
        $monitor->log($response);
    }
}

Where $monitor is an instance of a custom DB logging class (extending Zend_Log).

In the log method of the Monitor I loop over the Array of Zend_Exceptions returned by $response->getException().

For testing purposes I through an exception in an action:

throw new Zend_Exception('the big test', 555);

Most things work as expected, the Exception is written to the database.

Question

But, it's written twice. Why?

有帮助吗?

解决方案

Because the dispatch loop is called twice. First for the current action and then for default:error:error :) Place the log into dispatchLoopShutdown() method

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top