文档章节

thinkphp 入口文件模块绑定/多模块开启

big_cat
 big_cat
发布于 2016/03/08 09:58
字数 790
阅读 3116
收藏 2

ThinkPHP 3.2 版本后将整个项目 APP_PATH 路径下的 Application 作为一个应用,应用下可以存在多个模块,如系统默认生成的 Common Home Admin 等

完整Url路由模版如下

    index.php/module/controller/action/param1/val1/param2/val2

入口文件中的常量参数:

    //绑定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的占位

    index.php/controller/action/param1/val1/param2/val2

BIND_CONTROLLER会将当前入口文件与定义的 控制器 严格绑定,url 中不再存有 controller 的占位

    index.php/action/param1/val1/param2/val2

BIND_ACTION 会将当前入口文件与定义的 动作 严格绑定,url 中不再存有 action 的占位

    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'
);

总结:

1、单模块模式:

index.php/controller/action/param1/val1/param2/val2

在入口文件中

    define('BIND_MODULE', 'Web')

或者在 Common/Conf/config.php 中设定

    'MULTI_MODULE' => false,

    'DEFAULT_MODULE' => 'Web'  

即可达到相同的效果,url中不需要也不可以填写模块名,已经被初始内定了

2、多模块模式:

index.php/module/controller/action/param1/val1/param2/val2

在入口文件中不可以 BIND 任何模块,

Common/Conf/config.php 中设定

    'MULTI_MODULE' => true,

url 中需要按 module/controller/action 的模式去访问,设定的默认模块,默认控制器和默认动作可以起到默认路由的作用。

© 著作权归作者所有

big_cat
粉丝 48
博文 237
码字总数 162867
作品 0
长宁
后端工程师
私信 提问
Workerman集成ThinkPHP

关于Workerman与ThinkPHP集成的问题,相信已经有大神给出了答案。不过因为各人理解不一样,解决方案也是互有异同。 ThinkPHP版本:3.2.1+ Workerman版本:3.3.0+ 第一步:将Workerman复制到T...

零度开水
2016/05/27
6.3K
4
thinkphp多域名(子域名)支持配置解决方案

网站优化中我们需要把www.51php.com和51php.com 都指向同一个IP地址,并且需要定位到ThinkPHP的某个项目App中的不同模块,我们怎么实现类?在thinkphp中,我们可以通过 thinkphp入口文件的配...

汤圆
2012/12/27
2.3K
0
ThinkPHP 模块与操作 系统配置

ThinkPHP 模块 进入 MyappLibAction 目录,里面有个 IndexAction.class.php 文件。该文件为刚才我们运行入口文件 index.php 时系统自动生成的。打开该文件,其内容大致如下(方法内具体代码省...

mickelfeng
2012/11/26
117
0
新手指导Thinkphp开发指南

小编于昨日参加朋友婚礼,浑身喜气洋洋。今天给用户带来的是关于thinkphp开发指南的纯技术性的文档,本文档目的很简单: 1、 帮助开发人员掌握thinkphp入门 2、 快速利用thinkphp进行项目开发...

汤圆
2012/12/25
303
1
ThinkPHP中配置伪静态(URL重写)规则

什么是伪静态?简单说就是将动态的url变成静态的url显示,就叫做伪静态。“伪”就是假的,不是真的静态url,是通过技术手段实现的。用户只 要开通无忧php虚拟空间就支持url重写功能,无需其它...

汤圆
2012/12/30
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

面向对象编程

1、类和对象 类是对象的蓝图和模板,而对象是实例;即对象是具体的实例,类是一个抽象的模板 当我们把一大堆拥有共同特征的对象的静态特征(属性)和动态特征(行为)都抽取出来后,就可以定...

huijue
今天
8
0
redis异常解决 :idea启动本地redis出现 jedis.exceptions.JedisDataException: NOAUTH Authentication required

第一次安装在本地redis服务,试试跑项目,结果却出现nested exception is redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required错误,真是让人头疼 先检查一...

青慕
今天
10
0
Spring 之 IoC 源码分析 (基于注解方式)

一、 IoC 理论 IoC 全称为 Inversion of Control,翻译为 “控制反转”,它还有一个别名为 DI(Dependency Injection),即依赖注入。 二、IoC方式 Spring为IoC提供了2种方式,一种是基于xml...

星爵22
今天
25
0
Docker安装PostgresSql

Docker安装PostgresSql 拉取docker镜像 # docker pull postgres:10.1010.10: Pulling from library/postgres9fc222b64b0a: Pull complete 38296355136d: Pull complete 2809e135bbdb: Pu......

Tree
今天
8
0
内容垂直居中

方法一: 采用上下 padding 形式,将内容放置在垂直居中 .line { padding: 2% 0; text-align: center; height: 5px;} <div class="line"> 内容垂直居中</div> 方法二: 采......

低至一折起
今天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部