1

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

我正在使用 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 不起作用,就好像在调用它时它给了我到 APPLICATION 文件夹的 PATH,而不管使用的类是什么。

4

1 回答 1

4

APPPATH真的是系统文件,而不是前端资产。它是您的应用程序文件夹的路径,这就是它的用途。../relative/paths很少在 Codeigniter 中很好地工作,因为它们是相对于当前 URL(而不是视图文件)的。这真的是你陷入的一团糟。

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

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

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

不建议将 CSS 和图像等静态文件混合到应用程序文件中。大多数人创建一个名为assetsor的目录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'; ?>" />

这应该在任何地方都有效。

于 2012-09-13T17:09:24.980 回答