2011-03-10 74 views
0

我剛剛開始使用來自Codeigniter(CI)的Yii。我試圖設置一種情況,即在應用程序甚至可以訪問網站之前檢查用戶憑據。在CI中,我會創建一個父控制器,將我的支票放在那裏,然後繼承該父控制器。我一直在試圖對Yii做同樣的事情,但沒有運氣。Yii從父控制器生成錯誤

我第一次創建了一個init()方法(出於某種原因,我不能把代碼放在__construct()方法中)。然後我執行我的支票,這工作正常。我可以拋出一個新的CHttpException,但看起來很醜。我如何使用Yii的內置錯誤處理來完成我想要做的事情?

+0

根據檢查結果你想顯示什麼樣的回答? – 2011-03-10 19:54:22

+0

我想顯示一個錯誤,說他們不能使用這個網站 – Steve 2011-03-10 19:56:08

+0

那麼,渲染錯誤視圖有什麼問題? – 2011-03-10 19:57:35

回答

0

我通過發送錯誤到站點/錯誤視圖,然後調用Yii :: app() - > end()來加載子控制器來解決這個問題。

0

對於簡單的登錄規則,您應該實施Yii的'accessControl'過濾器,參見Yii documentation on authorizations

另一種方式是拋出異常像你已經做到了,自定義HTTP寫入錯誤的觀點,將其放置在yerfolder /保護/視圖/系統/(見例子警予/框架/ views目錄)

+0

我嘗試了你的第二個建議,但我無法使其工作。它永遠不會加載視圖。我正在閱讀您的第一個建議,並試圖弄清楚它是否適合我的情況。看起來,文檔談論的是關於授權的個人(兒童)控制者級別,而不是在全站(父級)級別。我在我公司的內部網上使用它,我必須根據pki驗證用戶,Yii的內置授權基於用戶名,密碼。 – Steve 2011-03-11 12:04:29

+0

我通過將錯誤發送到站點/錯誤視圖,然後調用Yii :: app() - > end()來加載子控制器來解決此問題。 – Steve 2011-03-11 14:24:28

+0

ahh ... cmiiw甚至在控制器操作被調用之前,你想檢查授權嗎?有點像cakephp中的beforeFilter?如果是這種情況,請查看http://www.yiiframework.com/doc/guide/1.1/en/basics.controller,具體是第4章,過濾器:D – ZaQ 2011-03-14 06:17:19