2014-01-17 38 views
0

正如标题所说,我想重定向之前得到的所有错误。因此,这是我的情况:ZF1出现错误之前重定向

我有一个选择,用于改变数据库(结构相同,但不同的数据); 所以我们可以说我在这里:localhost/user/edit/id/100 (database 1) 分贝的变化,我将用户重定向到同一个页面,但是我们从数据库2. 加载数据,如果没有找到它,我得到一个错误:

"Fatal error: Call to a member function on a non-object ..."

如何在重定向发生之前捕捉错误以更改url? 谢谢!

+0

但_after_您重定向别人,所以你不能重定向之前发现它出现这个错误(或我误解你的解释)。你也无法用try/catch块捕捉致命错误。您需要注册关机功能http://www.php.net/manual/en/function.register-shutdown-function.php – Volvox

回答

0

使用try {} catch() {}对重定向之前捕获错误。

try { 
    if (/* if error occured */) { 
     throw new \Exception('Error occured'); 
    } 
} catch(\Exception $e) { 
    // redirect with error occured 
} 

// redirect without error 

在Zend公司可能需要使用return $redirectObj,我不知道Zend的好。

在你的情况下,尝试这样做:

try { 
    if (! $this->getResponse()) { 
     throw new Exception('Error occured! Can not get response object'); 
    } 

    return $this->getResponse()->setRedirect($url); 
} catch (Exception $e) { 
    echo $e->getMessage(); 
    die(); 
} 
+0

已经尝试过: 试试 {this-> getResponse() - > setRedirect( $网址); } 赶上(例外$ E) { 回声 “

"; print_r($e); echo "
”;死(); } 它不工作;看来这种类型的错误不会被zend缓存; –

+0

请检查更新。 –

+0

仍然无法正常工作。发生重定向和我收到同样的错误 “致命错误:调用成员函数的非对象...” –