正確URL(測試環境): http://oa.com/index.php/admin/public/login 存取如下:
一:空操作處理
修改方法為loginw時報錯如下:
系統預設內建報錯機制:1、使用者體驗差 2、嚴重安全隱患。
檢視父類別控制器檔案Controller.class.php,發現如下程式碼:
意思是說,如果呼叫的方法不存在但定義了_empty()方法,就會去執行_empty(),或者展示與呼叫的方法同名的模板檔案。我們不可能為每一個未知的方法建立模板,因此此處我們使用_empty()方法來處理空操作。在控制器Public中定義_empty()方法,如下:
執行結果:
可以通過在_empty()方法中引入一個模板檔案,使頁面更加美觀,此處只是測試。但當我們有很多控制器時,在
每個控制器中分別定義一個_empty()不太合理,此時可以在父類別Controller.class.php中定義,則子類皆可使用,如下:
但通常不會修改父類別Controller.class.php中的程式碼,可通過在子類與父類別之間新增一個中間控制器來實現(詳見下篇)。
二、空控制器處理
修改控制器名為Publicu 錯誤如下:
檢視App.class.php 有如下程式碼:
因此可再建立一個EmptyController.class.php控制器並內建_empty()方法,當存取的控制器不存在時,存取此控制器。
再次存取頁面,如下:
相關教學:PHP視訊教學
以上就是如何處理ThinkPHP框架中空操作和空控制器的詳細內容,更多請關注TW511.COM其它相關文章!