视图中的所有路径全部和 index.php 同级,也就是和 index.php 属于一个目录下,也就是网站根目录,因为 index.php 后面看似是路径的东西其实那只是一种 URL 参数而已,并不是真正的路径。我建议在视图中使用 URL 辅助函数(URL Helper),CSS、图片等外部资源使用 base_url(),访问控制器方法使用 site_url()。
例如:
CI中图片的载入,$this->load->helper('url');<img src="<?php echo base_url(); ?>system/images/image0.jpg">
如果images文件夹和 index.php同级:
错误的理解:<img src="../images/image0.jpg">
在控制器中直接链接视图,请给出完整路径,例如:
$this->load->helper('url');
$src=base_url();
echo "<a href='".$src."system/application/views/show.php'>click 1!</a>";//通过此链接进入show.php,点击其中的链接可跳转到show2.php,因为地址为base_url().'system/application/views/show2.php',正确
$this->load->view('show');//这里引入的show.php,点击其中的链接将报错,因为地址为base_url().'show2.php',不存在
如果show.php中有一个链接:
<a href="show2.php">click 2!</a>
如果不遵照CI的MVC规范,在视图中处理get传参也会遇到CI路径问题,即使是在控制器中处理,也要避免在index方法(特别是默认控制器的index方法)中处理。
同样的,对于在视图中直接跳转到另一个视图的链接,要给出储存全路径,但这样就脱离了CI框架,跳入的视图中引用CI的类、函数等将报错。
注:视图从不直接调用,必须被一个控制器来调用。记住,在一个 MVC 框架中,控制器扮演着交通警察的角色,那么,他有责任去取回某一特定的视图。
如果站点不遵照www.example.com/[index.php/]controller/method/...样式,例如没有在服务器设置虚拟目录,直接使用localhost/projectdoc/c/m/...,在清除index.php、引入image,css等文件方面时都会带来不少的麻烦。