如何新增控制器?
在lib/action中新增乙個控制器:productaction.class.php:
<?php
class productaction extends action
}然後通過url訪問: 這此要引入乙個非常重要的乙個概念:
tp支援四種訪問方式:可以通過url_model引數來控制。
1.普通模試:預設都支援
m模組名
a動作2.pathinfo模(tp中的預設排程模式):
product模組名
index方法名
id是引數
1為值 。。。。。 一般都後面的引數都是成對出現的。以/分隔。
3. rewrite模式,即重寫。 在頁面靜態化中用的
可以把入口檔案省略掉:
設定方法:1、
配置檔案中載入了
mod_rewrite.so模組
2、allowoverride
none
將none
改為all (注意不能與 #options indexes同時出現,否則會出現沒有許可權訪問) 3
、確保url_model
設定為2 4
、把下面的內容儲存為
.htaccess
檔案放到入口檔案的同級目錄下
<
ifmodule
mod_rewrite.c
>
rewriteengineon
rewritecond
% !-d
rewritecond
% !-f
rewriterule
^(.*)$
index.php
/$1 [qsa,pt,l]
ifmodule
>
4.相容模式:
如果不支援web伺服器不支pathinfo或rewrite模式,但我們還想使用,可以考慮用相容模式
或者:在配置檔案中,乙個url_model的0123分別表示。預設都支援,這是怎麼回事????
無論什麼模式都支援普通模式,在表單提交的時候就可以看出區別了。
路徑分隔符:'url_pathinfo_depr' => '-', // pathinfo模式下,各引數之間的分割符號
控制器中的空操?用這個方式可以簡化url,利用它的乙個特點。
系統在找不到指定的方法,執行的方法。
在控制器內加入如下方法:
/** $name 表示請求的方法
*/public function _empty($name)
5、 空模組
空模組的概念是指當系統找不到指定的模組名稱的時候,系統會嘗試定位空模組(emptyaction),利用這個機制我們可以用來定製錯誤頁面和進行url的優化。
l emptyaction
module_name
我們現在嘗試請求乙個url
由於我們系統中沒有studentaction這個控制器,所以會報錯
我們在專案建立乙個叫emptyaction類,以後,如果系統找不到相應模組時,會自動定位到這個action中,如果我們在這個類中再新增乙個叫_empty的方法,這樣一樣,可以遮蔽所有來自url的錯誤
5、 專案分組
在大型專案裡,乙個大的專案往往是由若干個小專案組成。比如說:可能是由
前台專案、後台專案、會員部落格、論壇
l config.php
l default_group 預設分組
在我們專案中,現在開始分組:
1)前台專案 home
2)後台專案 admin
修改配置檔案:
一般來說:如果專案中分組,那麼,你的控制器和模板也是需要分組的,模型是不需要分組的
在lib/action目錄下,建立兩個資料夾叫home,admin,將之前的所有控制器放到admin下,
pathinfo模式:
普通模式:
如果不指定分組,則走預設分組。
一般地,模板和控制器要分組,模型不分組。
5、 url大小寫
預設來講,url是區分大小寫的
『url_case_insensitive』=>true 表示不區分大小寫
6、 前置後置操作
_before_
_after_
publicfunction _before_index(){}
publicfunction index(){}
publicfunction _after_index(){}
舉例:比我們有乙個方法叫index,設定它的前置和後置操作是指
新增乙個方法叫 _before_index,表示前置操作
新增乙個方法叫 _after_index,表示後置操作
在執行index方法之前,會自動先執行_before_index方法,執行完index方法之後,會自動執行 _after_index方法
6、 頁面跳轉/頁面重定向
在控制器中,有兩個方法,分別是success和error,表示操作在成功或失敗時的跳轉位址
l success
l error
在配置檔案config.php中,有兩個配置選項,分別表示success方法和error方法所使用的模板檔案路徑,如果有需要,可以考慮自定義
l tmpl_action_success
l tmpl_action_error
用到乙個叫模板常量:__url__
ThinkPHP控制器分級
注 請不要修改thinkphp慣例配置檔案,如果要覆蓋慣例配置的值,可在應用配置檔案中設定和慣例不符的配置項 慣例配置檔案路徑 thinkphp conf convention.php 在應用配置檔案config.php中修改一下內容即可實現控制器分級 例 在 home controller下建立資...
ThinkPHP 控制器(三)
id get id name post name value session var name cookie name file server php self ps 沒有統一的安全處理機制,後期調整會比較麻煩 i 變數型別.變數名 預設值 過濾方法 獲取 get id echo i get.id ...
ThinkPHP 控制器(四)
thinkphp 提供了一組常量來判斷當前請求是否是 get post 等。通過判斷請求處理不同的業務邏輯。常量 含義 is get 判斷是否 get 提交請求 is post 判斷是否 post 提交請求 is put 判斷是否 put 提交請求 is delte 判斷是否 delete 提交請求...