thinkphp 入口文件模塊綁定/多模塊開啓

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 的模式去訪問,設定的默認模塊,默認控制器和默認動做能夠起到默認路由的做用。

相關文章
相關標籤/搜索