PHP CI框架学习之路径访问


CI是一个PHP写的框架,使用它写网站非常方便,但是也会也有一些纠结的问题,比如说其中文件的路径访问。

CI严格贯彻MVC思想,因此基于此思想的文件访问也比较严格,controllers控制器是所有view的入口,从URL上是不能直接访问view的,必须通过控制器,也就是说要写控制器的路径,在写代码的时候,路径也是不能随便写的。

一般CSS、JS、图片文件我们会放到items下,比如说我们想在PHP文件中访问某个图片文件calendar-hilite.gif如下图所示:


就可以这样写图片的路径base_url("items/image/calendar/calendar-hilite.gif")。其中,base_url代表http://localhost/网站名/,而items下的文件,在URL中是可以直接访问的。其实localhost代表的位置是可以在控制文件中设置的,只是一个代表。

而有时我们所要的文件并不一定要写到items下,我们也可能要写到view下,或者控制器下,这是就有两种方式:一个是使用base_url,另一个是使用"./"或者"../"这种通用的路径访问形式,举个例子,比如说我要写一个用Ajax实现的某个功能,其代码如下:

[javascript]
  1. $.ajax({  
  2.         type:"POST",  
  3.         url:"<?php echo site_url("ajax_part/getCommentDetail");?>",  
  4.         data:{  
  5.             product_id :id,  
  6.             comment_first_id:first,  
  7.             comment_last_id:last  
  8.             } ,  
  9.         success:function(data)  
  10.         {  
  11.             $("#"+id).empty();  
  12.             $("#"+id).html(data);  
  13.         }  
  14.           
  15.     });  
其中url是我要访问的服务器文件位置,由于我吧这个文件,叫做ajax_part.php放在了控制器下,那么我访问的时候就有一些困难。但是用site_url就比较好办,site_url就代表http://localhost/网站名/index.php这样就可以通过URL的形式访问控制器文件,另一种方式是这样写:

[javascript]
  1. $.ajax({  
  2.         type:"POST",  
  3.         url:"../ajax_part/getCommentDetail",  
  4.         data:{  
  5.             product_id :id,  
  6.             comment_first_id:first,  
  7.             comment_last_id:last  
  8.             } ,  
  9.         success:function(data)  
  10.         {  
  11.             $("#"+id).empty();  
  12.             $("#"+id).html(data);  
  13.         }  
  14.           
  15.     });  
因为我当前的VIew页面是这样的形式:http://localhost/EShop/index.php/index2/index,那么我就用..退回到EShop(“是我的网站名”)下,再访问ajax_part/getCommentDetail就可以了。

这就是基本的思路,可能不需要说的这么复杂。

ajax_part.php的大致代码如下:

[php]
  1. <?php  
  2.   
  3. class Ajax_part extends CI_Controller {  
  4.       
  5.     function __construct() {  
  6.         parent::__construct ();  
  7.         //something   
  8.     }  
  9.     function getCommentDetail() {  
  10.         //something   
  11.     }  
  12. }  
  13. ?>  

相关内容