THINKPHP之控制器_PHP教程

來源:互聯網
上載者:User
如何新增控制器?


在Lib/Action中新增一個控制器:ProductAction.class.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檔案放到入口檔案的同級目錄下

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

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


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

http://www.bkjia.com/PHPjc/477233.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/477233.htmlTechArticle如何新增控制器? 在Lib/Action中新增一個控制器:ProductAction.class.php: ?php class ProductAction extends Action{ public function index(){ echo product模組 , ind...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.