我在应用程序中整理路径时遇到了问题。
我正在使用APPPATH函数来读取/写入我的数据库中的图像的字符串路径。问题是APPPATH将函数放在控制器之后
这是我获取css的功能
<link rel="stylesheet" type="text/css" href="<?php echo '../' . APPPATH.'_data/css/style.css'; ?>" />
当我去http://localhost/project/index.php/home
时,效果很好
css链接到http://localhost/project/application/_data/css/style.css
这是正确的
然后我有另一个控制器
http://localhost/project/index.php/member/index/1
css文件路径必须是
href="<?php echo '../../../' . APPPATH."_data/css/style.css"; ?>"
因为其他明智的我与css的链接转到了
http://localhost/project/index.php/member/application/_data/css/style.css
我正在使用一个简单的模板结构,其中我的标题/内容/页脚在视图中的包含子文件夹中,我正在向内容发送数据。很标准的东西。我只是不明白为什么APPPATH不起作用,就好像在调用它时给了我PATH到APPLICATION文件夹,无论使用哪个类。
答案 0 :(得分:3)
APPPATH
实际上是系统文件,而不是前端资产。它是应用程序文件夹的路径,这就是它应该用于的目的。 ../relative/paths
在Codeigniter中很少有效,因为它们与当前URL(不是视图文件)相对。这真是一团糟。
简单的解决方案是使用base_url()
代替,但如果你想要更短的路径,这就是我使用的:
define('BASE_URI', str_replace('index.php', '', $_SERVER['SCRIPT_NAME']));
在大多数情况下,结果将是/
,但这将考虑子目录中的CI安装。对你来说,它应该返回/project/
。
不建议将CSS和图像等静态文件混合到应用程序文件中。大多数人都会创建一个名为assets
或public
的目录来存储它们。
<link rel="stylesheet" href="<?php echo BASE_URI.'public/css/style.css'; ?>" />
<link rel="stylesheet" href="<?php echo base_url().'assets/css/style.css'; ?>" />
如果您确实需要在应用程序文件夹中存储资源,则只需删除所有相对路径。你不需要它们,因为APPPATH
是绝对的:
<link rel="stylesheet" href="<?php echo APPPATH.'_data/css/style.css'; ?>" />
这应该适用于所有地方。