ThinkPHP 3.2 版本後將整個項目 APP_PATH 路徑下的 Application 做爲一個應用,應用下能夠存在多個模塊,如系統默認生成的 Common Home Admin 等php
完整Url路由模版以下ui
index.php/module/controller/action/param1/val1/param2/val2url
入口文件中的常量參數:spa
//綁定Web模塊
define('BIND_MODULE', 'Web');
//綁定Site控制器
define('BIND_CONTROLLER', 'Site');
//綁定show動做
define('BIND_ACTION', 'show');調試
// 應用入口文件 // 檢測PHP環境 if (version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !'); // 開啓調試模式 建議開發階段開啓 部署階段註釋或者設爲false define('APP_DEBUG', true); //綁定Web模塊 define('BIND_MODULE', 'Web'); //綁定Site控制器 define('BIND_CONTROLLER', 'Site'); //綁定show動做 define('BIND_ACTION', 'show'); // 定義應用目錄 define('APP_PATH', './Application/'); // 引入ThinkPHP入口文件 require './ThinkPHP/ThinkPHP.php'; // 親^_^ 後面不須要任何代碼了 就是如此簡單
BIND_MODULE 會將當前入口文件與定義的 模塊 嚴格綁定,url 中再也不存有module的佔位code
index.php/controller/action/param1/val1/param2/val2路由
BIND_CONTROLLER會將當前入口文件與定義的 控制器 嚴格綁定,url 中再也不存有 controller 的佔位開發
index.php/action/param1/val1/param2/val2部署
BIND_ACTION 會將當前入口文件與定義的 動做 嚴格綁定,url 中再也不存有 action 的佔位it
index.php/param1/val1/param2/val2
因此若是要開啓單個入口文件下的多模塊訪問,這幾個 BIND 參數是不能夠使用的
多模塊的設置
默認是開啓多模塊的, 在入口文件中沒有綁定任何模塊的話 ,多模塊便默認開啓並有效
Common 模塊中的config/config.php:
<?php return array( 'MULTI_MODULE' => true, //是否開啓多模塊 'DEFAULT_MODULE' => 'Web', //默認模塊指定爲 Web );
這裏須要注意的是
DEFAULT_MODULE 默認值爲 Home
DEFAULT_CONTROLLER 默認值爲 Index
DEFAULT_ACTION 默認值爲 index
這三個參數只有當咱們不填寫路由參數直接訪問 index.php 時,系統會根據默認參數路由
若是咱們填寫了路由參數的話,必須按照 index.php/module/controller/action 的模式去訪問
以下圖:
此時若是我不寫模塊,則系統會把我本意爲控制器做爲模塊處理
關閉多模塊或者在入口文件中設定 BIND_MODULE 的模塊值:
若是咱們關閉多模塊,系統會根據 DEFAULT_MODULE 的值做爲默認模塊進行訪問,咱們不須要也不能在 url 中填寫模塊名,它已經被內定了,其實就至關於在入口文件中 BIND_MODULE 爲默認模塊
<?php return array( 'MULTI_MODULE' => false, 'DEFAULT_MODULE' => 'Web' );
總結:
一、單模塊模式:
index.php/controller/action/param1/val1/param2/val2
在入口文件中
define('BIND_MODULE', 'Web')
或者在 Common/Conf/config.php 中設定
'MULTI_MODULE' => false,
'DEFAULT_MODULE' => 'Web'
便可達到相同的效果,url中不須要也不能夠填寫模塊名,已經被初始內定了
二、多模塊模式:
index.php/module/controller/action/param1/val1/param2/val2
在入口文件中不能夠 BIND 任何模塊,
Common/Conf/config.php 中設定
'MULTI_MODULE' => true,
url 中須要按 module/controller/action 的模式去訪問,設定的默認模塊,默認控制器和默認動做能夠起到默認路由的做用。