2014-01-17 39 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

仍然無法正常工作。發生重定向和我收到同樣的錯誤 「致命錯誤:調用成員函數的非對象...」 –