打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ThinkPHP中的pathinfo模式、模板与控制之间的关系

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');
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
PHP教程 54 - ThinkPHP(1)
URL模式
ThinkPHP3.1快速入门(1)基础
Apache2.2.22开启PathInfo模式支持 | 微.小柒
php如果实现链接url静态化
Nginx伪静态配置和常用Rewrite伪静态规则集锦
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服