为什么thinkphp3.1手册0不能分组啊,分成home和admin。 求分好主的代码项目,发到

君,已阅读到文档的结尾了呢~~
广告剩余8秒
文档加载中
ADMIN 为后台管理应用,入口是ADMIN.PHP THINKPHP为框架目录HOME前台项目页面入口是INDEX.PHP PUBLIC文件夹存放JS IMAGES CLEANCACHE.PHP 是清空缓存 ...
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
ADMIN 为后台管理应用,入口是ADMIN.PHP THINKPHP为框架目录HOME ...
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口thinkphp隐藏index.php出现的问题解决方法_懒人程序
支付宝赞助帐号:
thinkphp隐藏index.php出现的问题解决方法
thinkphp隐藏index.php出现的问题解决方法
去除url中的index.php
例如你的原路径是 http://localhost/test/index.php/index/add
那么现在的地址是 http://localhost/test/index/add
如何去掉index.php呢?
去除index.php以后其他页面访问失败,加上index.php,访问正常?
1.httpd.conf配置文件中加载了mod_rewrite.so模块& //在APACHE里面去配置
#LoadModule rewrite_module modules/mod_rewrite.so把前面的警号去掉
2.AllowOverride None 讲None改为 All & & &
在APACHE里面去配置 (注意其他地方的AllowOverride也统统设置为ALL)
&Directory &D:/server/apache/cgi-bin&&
AllowOverride none& 改&& AllowOverride ALL
Options None
Order allow,deny
Allow from all
&/Directory&
3.确保URL_MODEL设置为2,在项目的配置文件里写
return Array(
&& 'URL_MODEL' =& '2',
4 .htaccess文件必须放到跟目录下
这个文件里面加:
&IfModule mod_rewrite.c&
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
&/IfModule&
补充:在windows下不能建立以点开头的文件,你可以先随便建立一个文件
然后在DOS在操作 rename xxxx.xxxx&& .htaccess
通常的URL里面含有index.php,为了达到更好的SEO效果可能需要去掉URL里面的index.php ,通过URL重写的方式可以达到这种效果,通常需要服务器开启URL_REWRITE模块才能支持。
下面是Apache的配置过程,可以参考下:
1、httpd.conf配置文件中加载了mod_rewrite.so模块
2、AllowOverride None 将None改为 All
3、确保URL_MODEL设置为2
4、把下面的内容保存为.htaccess文件放到入口文件的同级目录下
&IfModule&mod_rewrite.c&
RewriteEngine&on
RewriteCond&%{REQUEST_FILENAME}&!-d
RewriteCond&%{REQUEST_FILENAME}&!-f
RewriteRule&^(.*)$&index.php/$1&[QSA,PT,L]
&/IfModule&
重启Apache之后,原来的
http://serverName/index.php/Blog/read/id/1
就可以通过访问
http://serverName/Blog/read/id/1
简化了URL地址。
支持键盘 ← →模块化设计 - [ ThinkPHP3.2.3完全开发手册 ] - 看云
一个完整的ThinkPHP应用基于模块/控制器/操作设计,并且,如果有需要的话,可以支持多入口文件和多级控制器。
ThinkPHP新版采用模块化的架构设计思想,对目录结构规范做了调整,可以支持多模块应用的创建,让应用的扩展更加方便。
一个典型的URL访问规则是(我们以默认的PATHINFO模式为例说明,当然也可以支持普通的URL模式):
http://serverName/index.php(或者其他应用入口文件)/模块/控制器/操作/[参数名/参数值...]
ThinkPHP的应用可以支持切换到命令行访问,如果切换到命令行模式下面的访问规则是:
&php.exe index.php(或其它应用入口文件) 模块/控制器/操作/[参数名/参数值...]
解释下其中的几个概念:
基于同一个入口文件访问的项目我们称之为一个应用。
一个应用下面可以包含多个模块,每个模块在应用目录下面都是一个独立的子目录。
每个模块可以包含多个控制器,一个控制器通常体现为一个控制器类。
每个控制器类可以包含多个操作方法,也可能是绑定的某个操作类,每个操作是URL访问的最小单元。
模块化设计的思想下面模块是最重要的部分,模块其实是一个包含配置文件、函数文件和MVC文件(目录)的集合。
新版采用模块化的设计架构,下面是一个应用目录下面的模块目录结构,每个模块可以方便的卸载和部署,并且支持公共模块。
Application
默认应用目录(可以设置)
├─Common
公共模块(不能直接访问)
其他更多模块
├─Runtime
默认运行时目录(可以设置)
默认情况下,只要应用目录下面存在模块目录,该模块就可以访问,只有当你希望禁止某些模块或者仅允许模块访问的时候才需要进行模块列表的相关设置。
每个模块是相对独立的,其目录结构如下:
├─Module
配置文件目录
├─Common
公共函数目录
├─Controller
控制器目录
逻辑目录(可选)
├─Service
Service目录(可选)
... 更多分层目录可选
由于采用多层的MVC机制,除了Conf和Common目录外,每个模块下面的目录结构可以根据需要灵活设置和添加,所以并不拘泥于上面展现的目录
Common模块是一个特殊的模块,是应用的公共模块,访问所有的模块之前都会首先加载公共模块下面的配置文件(Conf/config.php)和公共函数文件(Common/function.php)。但Common模块本身不能通过URL直接访问,公共模块的其他文件则可以被其他模块继承或者调用。
公共模块的位置可以通过COMMON_PATH常量改变,我们可以在入口文件中重新定义COMMON_PATH如下:
define('COMMON_PATH','./Common/');
define('APP_PATH','./Application/');
require './ThinkPHP/ThinkPHP.php';
其应用目录结构变成:
WEB部署目录(或者子目录)
├─index.php
├─README.md
README文件
├─Common
应用公共模块目录
├─Application
应用模块目录
├─Public
应用资源文件目录
└─ThinkPHP
定义之后,Application目录下面就不再需要Common目录了。
自动生成模块目录
可以支持自动生成默认模块之外的模块目录以及批量生成控制器和模型类。
例如,如果我们需要生成一个Admin模块用于后台应用,在应用入口文件中定义如下:
// 绑定Admin模块到当前入口文件
define('BIND_MODULE','Admin');
define('APP_PATH','./Application/');
require './ThinkPHP/ThinkPHP.php';
然后访问URL地址
http://serverName/index.php
就会生成Admin模块的目录,并生成一个默认的控制器类Admin\Controller\IndexController。 如果需要生成更多的控制器类,可以定义BUILD_CONTROLLER_LIST常量,例如:
// 绑定Admin模块到当前入口文件
define('BIND_MODULE','Admin');
define('BUILD_CONTROLLER_LIST','Index,User,Menu');
define('APP_PATH','./Application/');
require './ThinkPHP/ThinkPHP.php';
访问后会自动生成三个指定的控制器类:
Admin\Controller\IndexController
Admin\Controller\UserController
Admin\Controller\MenuController
注意:默认生成的控制器类都是继承Think\Controller,如果需要继承其他的公共类需要另外调整。 如果在应用的公共配置文件中设置关闭了 APP_USE_NAMESPACE的话,生成的控制器类则不会采用命名空间定义。
同样,也可以定义BUILD_MODEL_LIST支持生成多个模型类:
// 绑定Admin模块到当前入口文件
define('BIND_MODULE','Admin');
define('BUILD_MODEL_LIST','User,Menu');
define('APP_PATH','./Application/');
require './ThinkPHP/ThinkPHP.php';
访问会自动生成模型类:
Admin\Model\UserModel
Admin\Model\MenuModel
注意:默认生成的模型类都是继承Think\Model,如果需要继承公共的模型类需要另外调整。 如果在应用的公共配置文件中设置关闭了 APP_USE_NAMESPACE的话,生成的模型类则不会采用命名空间定义。
还可以自己手动调用Think\Build类的方法来生成控制器类和模型类,例如:
// 生成Admin模块的Role控制器类
// 默认类库为Admin\Controller\RoleController
// 如果已经存在则不会重新生成
\Think\Build::buildController('Admin','Role');
// 生成Admin模块的Role模型类
// 默认类库为Admin\Model\RoleModel
// 如果已经存在则不会重新生成
\Think\Build::buildModel('Admin','Role');
更多的方法可以参考Think\Build类库。
禁止访问模块
ThinkPHP对模块的访问是自动判断的,所以通常情况下无需配置模块列表即可访问,但可以配置禁止访问的模块列表(用于被其他模块调用或者不开放访问),默认配置中是禁止访问Common模块和Runtime模块(Runtime目录是默认的运行时目录),我们可以增加其他的禁止访问模块列表:
// 设置禁止访问的模块列表
'MODULE_DENY_LIST'
array('Common','Runtime','Api'),
设置后,Api模块不能通过URL直接访问,事实上,可能我们只是在该模块下面放置一些公共的接口文件,因此都是内部调用即可。
设置访问列表
如果你的应用下面模块比较少,还可以设置允许访问列表和默认模块,这样可以简化默认模块的URL访问。
'MODULE_ALLOW_LIST'
array('Home','Admin','User'),
'DEFAULT_MODULE'
设置之后,除了Home、Admin和User模块之外的模块都不能被直接访问,并且Home模块是默认访问模块(可以不出现在URL地址)。
单模块设计
如果你的应用够简单,那么也许仅仅用一个模块就可以完成,那么可以直接设置:
// 关闭多模块访问
'MULTI_MODULE'
'DEFAULT_MODULE'
一旦关闭多模块访问后,就只能访问默认模块(这里设置的是Home)。
单模块设计后公共模块依然有效
多入口设计
可以给相同的应用及模块设置多个入口,不同的入口文件可以设置不同的应用模式或者绑定模块。
例如,我们在index.php文件的同级目录新增一个admin.php入口文件,并绑定Admin模块:
// 绑定Home模块到当前入口文件
define('BIND_MODULE','Admin');
define('APP_PATH','./Application/');
require './ThinkPHP/ThinkPHP.php';
如果你更改了系统默认的变量设置,则需要做对应的模块绑定的变量调整。
绑定模块后,原来的访问地址
http://serverName/index.php/Admin/Index/index
http://serverName/admin.php/Index/index
同样的方式,我们也可以在入口文件中绑定控制器,例如:
define('BIND_MODULE', 'Home'); // 绑定Home模块到当前入口文件
define('BIND_CONTROLLER','Index'); // 绑定Index控制器到当前入口文件
define('APP_PATH','./Application/');
require './ThinkPHP/ThinkPHP.php';
绑定模块和控制器后,原来的访问地址:
http://serverName/index.php/Home/Index/index
http://serverName/home.php/index
不同的入口文件还可以用于绑定不同的应用模式,参考部分。
页面正在加载中thinkPHP--模块分组
模块分组功能是为了更好癿组织已有癿模块,幵丏增加项目容量癿一个有效机刢。分组功能可以把以往癿多项目合幵刡一个项目中去,返样一来,乀前需要采用跨项目操作癿地方,现在因为在一个项目中仍而免去了丌少麻烦,幵丏公共文件癿重用也方便了,幵丏每个分组都可以有自己独立癿配置文件、公共文件、询觊包,在URL癿讵问上面也非常清晰。
要启用分组模块非常简单,配置下APP_GROUP_LIST参数和DEFAULT_GROUP参数即可。
例如我们把当前癿项目分成Home和Admin两个组,分删表示前台和后台功能,那举叧需要迕行下面癿配置:
'APP_GROUP_LIST'=&'Admin,Home',
'DEFAULT_GROUP'=&'Home',
需要注意癿是,一定要把上面癿配置参数放入项目癿配置文件,而丌是项目癿分组配置戒者模块配置文件。多个分组乀间用逗号分隑即可,默认分组叧允讲讴置一个。
在我们启用项目分组乀前,由亍使用癿两个项目,所以URL地址分删是:
Home项目地址
Admin项目地址
采用了分组模式后,URL地址发成:
如果Home是默认分组癿话 迓可以发成
ThinkPHP2.1 完全开収手册
ThinkPHP 文档小组 56
如果讴置了隐藏index.php癿话,两者癿URL表现效果基本上是一致癿,但是仍管理和公共调用癿觇度来看,确实方便了丌少。当使用分组模式旪,目录绌极叧是做了一点小小癿扩展,主要区删在亍项目类库目录和模板目录下面多了一局分组目录。
如果丌使用分组模式癿话,Action目录下面应诠是所有癿Action类库,现在我们可以在Action目录下面创建自己癿分组目录,例如我们把当前项目分成了Home和Admin两个组,那举就需要在Action目录下面创建Home和Admin目录,然后把属亍各自癿Action类库放刡对应癿目录下面。如果某个Action类库是每个分组都需要使用戒者公共继承癿话,可以把返个公共Action类库放刡分组目录乀外,幵丏刟用ThinkPHP癿自劢加载机刢无需手劢引入。
使用了模块分组后,如果需要实例化其他分组癿模块类,可以使用:
A('Home.User');// 实例化Home分组癿UserAction类
对亍分组模式下面癿Model类库是否需要分组完全看项目癿需要,由亍通常丌同癿分组对应癿数据表是相同癿,因此,我们推荐Model类库丌分组存放,仌然保留乀前癿方式,无讳是什举分组都公共调用Model类库。如果确实需要分组癿话,仌然可以挄照Action癿方式,在Model目录下面创建Home和Admin目录,然后放入对应癿Model类库,采用返种方式癿话,模型类癿调用方法有所区删。
如果模型类也分组存放,在使用D方法调用癿旪候需要使用:
$User = D('Home.User');// 实例化Home分组下面癿UserModel类
模板文件癿分组和Action类库分组也基本类似,在原来癿模板主题目录下面增加一个分组目录即可。
ThinkPHP2.1 完全开収手册
ThinkPHP 文档小组 57
Tpl/default/Home/Index/index.html
Tpl/default/Admin/User/index.html
相比乀前癿模板文件位置就是多了一个分组目录Home和Admin,如果视徇目录绌极太深了,可以配置 TMPL_FILE_DEPR参数
来减少目录局次,诠参数默认是 “/”,如果改成
'TMPL_FILE_DEPR'=&'_'
那举分组癿模板文件就发成了
Tpl/default/Home/Index_index.html
Tpl/default/Admin/User_index.html
分组模块癿概念,幵丌尿限亍将项目区分为前台和后台。你可以挄自己所需类型,迕行明确细致癿区分,返样非常方便亍项目管理和开収部署。
分组模块下面癿具体模块和乀前癿模块功能没有任何区删,已有癿URL和模块功能都可以径好癿支持,例如空模块、空操作、伪静态等等。
==========================================================
'APP_GROUP_LIST'=&'Admin,Home',
'DEFAULT_GROUP'=&'Home',
第一步骤:在config.php配置文件中添加入上两行代码
在我们启用项目分组之前,由于使用的两个项目,所以URL地址分别是:
http://&serverName&/index.php/Index/index&
Home项目地址
http://&serverName&/Admin/index.php/Index/index&
Admin项目地址
采用了分组模式后,URL地址变成:
http://&serverName&/index.php/Home/Index/index&
如果Home是默认分组的话 还可以变成 http://&serverName&/index.php/Index/index
http://&serverName&/index.php/Admin/Index/index
已投稿到:}

我要回帖

更多关于 thinkphp3.1手册 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信