ThinkPHP中的pathinfo模式、模板与控制之间的关系
(2012-11-24 20:48:49)
pathinfo四种访问模式
0:普通模式。http://bbs.aaa.net/index.php?m=user&a=d
m代表模块a代表方法
1:叫pathinfo模式,它下面还分两种模式。默认访问模式是http://bbs.aaa.net/index.php/user/index
2:rewrite重写(伪静态)。可以自己写相关的rewrite规则,也可以使用系统为我们提供的rewrite规则。http://bbs.aaa.net/user/index。
apache手册中有一块是URL重写规则,可以看一下。
3:叫做兼容模式。它的路径访问http://bbs.aaa.net/index.php?s=/user/g
当服务器上不支持pathinfo模式的时候,但之前的路径访问模式上面,全都用的pathinfo模式,它会提示路径模式不正确。这时,为解决这种问题,可以用标号为3的兼容模式来处理,这些都是支持GET的,所以用兼容模式可以解决它。
设置访问模式,要在conf.php文件内:
‘URL_MODEL’=> 0;
设置为2时,因为开启URL重写,不论是重写的还是被重写的,都能通过原有路径来进行访问。
如果要开启rewrite模式的话,1、要确认你的服务器已经开启了apache的rewrite模块。apache下的httpd.conf文件中的LoadModulerewrite..这一行的#去掉,然后重启服务器。2、在与主入口文件,项目入口文件同级的目录下面新建一个.htaccess文件。记事本用vi打开,再另存为.htaccess文件。或者是直接打开记事本,在另存为的文件名中写“.htaccess”一定要有引号。建好后可以直接把手册中的rewrite部分粘过来,就可以启用rewrite了,也就是可以直接使用http://bbs.aaa.net/user/index了,不用写index.php或admin.php这些入口文件了。
如果使用2rewrite模式,会加大服务器的性能消耗。
-------
conf.php中设置
'PATHINFO_URL_MODEL'=>1普通模式http://.../index.php/m/user/a/index加上m和a,即使把m和a的位置换一下也不影响结果a/index/m/user
普通模式必须要在前面加上/a/模块/a/动作,并且顺序可以发生变化,如果要用GET传值,在这种PATHINFO模式下,要加斜线后面再加值,如:http:../index.php/m/user/a/index/username/zhangsan
2、智能模式,值为2
pathinfo默认就是智能模式,/index.php/user/index意思就是user模块下的index方法
这种方式下GET传值:/username/张三
它的值传方法与普通模式传值一致
-----------
‘URL_PATHINFO_DERP’='-';
这个设置是把分隔符变为中橫线(-),默认是/
------
改定界符
'APP_DEBUG'=>'true'开启调试模式,一旦开启,它会模拟linux操作系统来帮我们识别大小写。并且开启之后方法名的大小写与,模板文件的大小写有关。但模拟出来的文件夹命名,不区分大小写。
---
默认情况下每个方法下面的$this->display()是显示跟这个方法名相同的模板的,如果不想显示这个方法名的模板,而想显示另一个文件(同级)内容,直接写$this->display('anthor');就会用anthor.html,括号里不用写后缀名
跨模块显示(以下示例的$this->display均在Index模块下的index方法中)
$this->display('模块名:模板名');如$this->display('user:index');就会显示user模块下的index文件
跨主题,也叫跨皮肤
在default建一个skin,在skin下建一个user文件夹,再在它下面建一个new.html
$this->display('skin@user:new');那这样的话,再显示这个页面的时候会红色背景
(‘皮肤的目录名@找哪个目录的名称:模板的名称’);
---
全路径输出:
在主入口文件下,建一个Public目录,在它下建一个ss.html,在它下面再加一个背景颜色
$this->display('./Public/ss.html');再打开这个页面就是绿色背景
注:加载文件的位置全以主入口文件定位。即相对于index.php这个文件定位的。
----
还有种绝对路径,按你的磁盘来写('E:/AppServ/www/project/Public/ss.html');效果一样
---
$this->display('指定位置',‘编码’,‘文件的mimie类型’);比如需要输出xml文件,就可以写成$this->display('index','utf-8','text/xml');
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。