THINKPHP之控制器

2021-09-09 00:16:07 字數 2969 閱讀 1752

如何新增控制器?

在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 提交請求...