ThinkPHP控制器
ThinkPHP控制器Controller
1、什么是控制器
在MVC框架中,其核心就是C(Controller)控制器。主要用于接收用戶請求,處理業務邏輯。
2、控制器的定義
在一個ThinkPHP系統中,其可以分為多個模塊(如Home前臺模塊,Admin后臺模塊等),我們在定義控制器時都需要定義在相應的模塊內。定義規范如下:
控制器名稱(首字母大寫)+Controller(關鍵詞)+.class.php(類文件后綴)
如:IndexController.class.php
????NewsController.class.php
3、編寫控制器代碼
① 定義命名空間
命名空間就是為了解決php中類、函數以及常量重名問題。
namespace 空間名稱
特別說明:命名空間的空間名稱與路徑是沒有任何關系的,但是在ThinkPHP框架中其與ThinkPHP框架的路徑是想對應的,謹記!!!
② 引入核心控制器
use 命名空間
use Think\Controller;
③ 定義自定義控制器,如下圖所示:
4、控制器的訪問規則(URL調度模式)
在ThinkPHP框架中,一共有4中URL調度模式,默認使用的是第2中,PATHINFO調度模式:
http://自定義域名/index.php(入口文件)/Home(模塊名稱)/News(控制器名稱)/index(操作方法)
① 普通調度模式
參數說明:
基本語法:
http://自定義域名/index.php(入口文件)?m=Home(模塊)&c=News(控制器名稱)&a=index(操作方法)
如果想在ThinkPHP中使用普通調度模式,需要在自定義配置文件中設置URL_MODEL參數如下:
運行結果:
② PATHINFO調度模式
PATHINFO調度模式是ThinkPHP中默認的URL調度模式,其號稱是最友好的鏈接形式,有利于SEO優化,基本語法:
http://自定義域名/index.php(入口文件)/Home(模塊名稱)/News(控制器名稱)/index(操作方法)
③ REWRITE重寫模式(防盜鏈)
基本語法:
http://自定義域名/Home(前臺模塊)/News(控制器名稱)/index(操作方法)
Rewrite重寫模式詳細設置步驟:
1)httpd.conf配置文件中加載了mod_rewrite.so模塊
2)AllowOverride None 將None改為 All
記住:設置完成后要重啟Apache服務器!
3)確保URL_MODEL設置為2
4)把下面的內容保存為.htaccess文件放到入口文件的同級目錄下
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
設置成功后,訪問效果如下圖所示:
④ 兼容模式
基本語法:
http://自定義域名/index.php(入口文件)?s=Home(前臺模塊)/News(控制器)/index(操作方法)
設置URL_MODEL為3即可,如下圖所示:
運行結果:
5、開啟ThinkPHP代碼調試
在實際項目開發中,肯定會遇到相關錯誤信息,但是默認ThinkPHP框架顯示的是友好錯誤,如下圖所示:
為了能實現更好的代碼調試效果,可以在項目的入口文件中定義以下參數:
記住:項目上線后,這行代碼要注釋掉!
6、空操作
1)定制錯誤頁面
2)優化url鏈接
7、空控制器
1)定制錯誤頁面
2)優化url鏈接
8、劃分項目前后臺模塊(Home、Admin)
ThinkPHP3.2.3模塊結構劃分:
Home模塊名稱
Controller控制器
Model模型
View視圖
Admin模塊名稱
Controller控制器
Model模型
View視圖
?
① 在Application文件夾下創建Admin文件夾作為后臺模塊
② 在Admin文件夾下創建Controller/Model/View三個文件夾
③ 配置文件共享問題
在Application項目目錄中,一共有兩個模塊(Home、Admin),那這個配置文件應該怎么設置呢?
1)每個模塊下單獨使用一個配置文件config.php(當前配置文件只對當前模塊有用)
2)兩個模塊公用一個配置文件,直接寫在Application/Common/Conf/config.php文件中
?
④ 設置配置文件
案例:在后臺定義登陸模塊
① 在Application/Admin/Controller文件夾中創建一個Public控制器
② 編寫代碼如下圖所示:
③ 通過URL調度模式2訪問后臺登陸模塊
9、URL大小寫
在Window操作系統中,其對URL大小寫并不敏感(不區分大小寫)。但是其在Linux操作系統中又是嚴格區別大小寫的,所以我們可以通過設置以下參數讓ThinkPHP不區分大小寫。
10、頁面跳轉(帶可視化模板)
$this->success(msg,url,time) :成功跳轉
$this->error(msg,url,time) :失敗跳轉
示例代碼:
如果在實際項目開發中,需要更改success與error的模板,可以通過以下參數獲取模板信息:
11、頁面重定向
$this->redirect(url,array('id'=>1),5,"頁面跳轉中");
參數說明:
url:跳轉鏈接
array('id'=>1) :傳遞參數id為1
5:等待時間
"頁面跳轉中" :提示信息…
轉載于:https://www.cnblogs.com/nyxd/p/5366061.html
總結
以上是生活随笔為你收集整理的ThinkPHP控制器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jenkins-git-gradle配置
- 下一篇: php,常见的面试