程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> THINKPHP之控制器

THINKPHP之控制器

編輯:關於PHP編程

 


如何新增控制器?

 


在Lib/Action中新增一個控制器:ProductAction.class.php:

 


<?php

class ProductAction extends Action{
   
    public function index(){
        echo 'product模塊 , index方法';
    }
}

 


然後通過url訪問: 這此要引入一個非常重要的一個概念:

url調度模式:就是我們在訪問網站時的使用不同的ur訪問方式

 


tp支持四種訪問方式:可以通過URL_MODEL參數來控制。

 


1.普通模試:默認都支持


www.tp.com/index.php?m=Product&a=index&id=1

m模塊名

a動作


2.pathinfo模(tp中的默認調度模式):

http://www.tp.com/index.php/Product/index/id/1/name/zhangsan

product模塊名

index方法名

id是參數

1為值 。。。。。 一般都後面的參數都是成對出現的。以/分隔。

 


3. rewrite模式,即重寫。 在頁面靜態化中用的

可以把入口文件省略掉:

http://www.tp.com/Product/index/id/1/name/zhangsan

設置方法:

 

1、httpd.conf配置文件中加載了mod_rewrite.so模塊

2、AllowOverride None將None改為All  (注意不能與 #Options Indexes同時出現,否則會出現沒有權限訪問)


3、確保URL_MODEL設置為2

4、把下面的內容保存為.htaccess文件放到入口文件的同級目錄下

<IfModulemod_rewrite.c>

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

</IfModule>

 

 


4.兼容模式:

如果不支持web服務器不支pathinfo或rewrite模式,但我們還想使用,可以考慮用兼容模式


http://www.tp.com/index.php?s=Product/index/id/1/name/zhangsan

或者:http://www.tp.com/?s=Product/index/id/1/name/zhangsan

 

 

 


在配置文件中,一個URL_MODEL的0123分別表示。默認都支持,這是怎麼回事????

 


無論什麼模式都支持普通模式,在表單提交的時候就可以看出區別了。

 

 

路徑分隔符:'URL_PATHINFO_DEPR'     => '-',    // PATHINFO模式下,各參數之間的分割符號

 


http://www.tp.com/?s=Product-index-id-1-name-zhangsan

 

 

 

控制器中的空操?用這個方式可以簡化url,利用它的一個特點。

系統在找不到指定的方法,執行的方法。

 


在控制器內加入如下方法:

    /*
     * $name 表示請求的方法
     */
    public function _empty($name){
        echo '請求頁面無法顯示'.$name;
    }

 

 

 


5、 空模塊

 

空模塊的概念是指當系統找不到指定的模塊名稱的時候,系統會嘗試定位空模塊(EmptyAction),利用這個機制我們可以用來定制錯誤頁面和進行URL的優化。

 

l  EmptyAction

 

       MODULE_NAME

 

我們現在嘗試請求一個url

 

http://localhost/tp/index.php/Student/shanghai

 

由於我們系統中沒有StudentAction這個控制器,所以會報錯

 

我們在項目創建一個叫EmptyAction類,以後,如果系統找不到相應模塊時,會自動定位到這個Action中,如果我們在這個類中再添加一個叫_empty的方法,這樣一樣,可以屏蔽所有來自url的錯誤

 


5、 項目分組

 

在大型項目裡,一個大的項目往往是由若干個小項目組成。比如說:可能是由

前台項目、後台項目、會員博客、論壇

 

l  config.php

 

l  APP_GROUP_LIST              分組列表

l  DEFAULT_GROUP               默認分組             

 

在我們項目中,現在開始分組:

1)前台項目       Home

2)後台項目         Admin

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved