codeigniter - APPPATH在控制器之后返回路径

时间:2012-09-13 16:47:26

标签: codeigniter

我在应用程序中整理路径时遇到了问题。

我正在使用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文件夹,无论使用哪个类。

1 个答案:

答案 0 :(得分:3)

APPPATH实际上是系统文件,而不是前端资产。它是应用程序文件夹的路径,这就是它应该用于的目的。 ../relative/paths在Codeigniter中很少有效,因为它们与当前URL(不是视图文件)相对。这真是一团糟。

简单的解决方案是使用base_url()代替,但如果你想要更短的路径,这就是我使用的:

define('BASE_URI', str_replace('index.php', '', $_SERVER['SCRIPT_NAME']));

在大多数情况下,结果将是/,但这将考虑子目录中的CI安装。对你来说,它应该返回/project/

不建议将CSS和图像等静态文件混合到应用程序文件中。大多数人都会创建一个名为assetspublic的目录来存储它们。

<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'; ?>" />

这应该适用于所有地方。