【问题标题】:codeigniter - APPPATH returns path after controllercodeigniter - APPPATH 在控制器之后返回路径
【发布时间】:2012-09-06 19:45:48
【问题描述】:

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

我正在使用 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,而不管使用的是什么类。

【问题讨论】:

    标签: codeigniter


    【解决方案1】:

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

    这应该适用于任何地方。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多