2011-12-27 70 views
4

我正在使用CakePHP 2.0並想要處理ForbiddenException。 我跟着在CakePHP Cookbook中解釋的example從AppExceptionHandler呈現視圖

我的異常現在被捕獲在AppExceptionHandler中,但我不知道如何從這裏移動。我想渲染一個相關的視圖,但$this不可用。 有沒有人有我的起點?

編輯:
到目前爲止我的代碼是相同的食譜例如:

在應用程序/配置/ core.php中

Configure::write('Exception.handler', 'AppExceptionHandler::handle'); 

在應用程序/配置/ bootstrap.php中

App::uses('AppExceptionHandler', 'Lib'); 

在app/Lib/AppExecptionHandler.php中

class AppExceptionHandler { 
    public static function handle($error) { 
     if($error instanceOf ForbiddenException){ 
      echo 'Oh noes! ' . $error->getMessage(); 
      // $this->Session->setFlash('To access the page please login');  
     } 
    } 
} 

問候,巴特

+0

記住你的AppExceptionHandler,這樣我們可以看到你迄今爲止做了什麼?值得注意的是,如果你只需要渲染,你可以使用AppExceptionRenderer,它可以通過$ this-> controller訪問視圖系統。 – 2011-12-30 07:14:03

+0

嗨布拉德,謝謝。我已經添加了代碼,但我認爲你對AppExceptionRenderer的評論就是我需要的。 在此期間,我發現我也可以添加文件View/Errors/error400.ctp並以這種方式控制401和403錯誤的渲染。 – 2011-12-30 09:07:53

+0

@Brelsnok你能否就這個問題粘貼你最新的解決方案。我也嘗試使用自定義錯誤處理程序,但不能成功,因爲食譜是非常有限的.. – trante 2012-08-23 22:10:20

回答

-2

當您在您的評論中提到,你可以做的錯誤觀點複製到自己的文件夾View和控制渲染。

如果您還想使用會話,請記住,在您的應用程序的任何部分,您也可以使用CakeSession訪問會話。

http://book.cakephp.org/2.0/en/development/sessions.html#reading-writing-session-data

+1

我討厭它,當人們downvote沒有評論/解釋。它會幫助我和其他人理解爲什麼有些人認爲這不是一個好的答案。 – luchomolina 2013-02-06 21:07:28

+1

更令人討厭的是,除了這個之外,還有2個downvotes,但沒有其他答案。讓我希望我可以倒下一個人的倒退:-P – 2013-03-29 22:02:29