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