【问题标题】:How to link assets(images,stylesheet etc) in Views for CodeIgniter 2.1?如何在 CodeIgniter 2.1 的视图中链接资产(图像、样式表等)?
【发布时间】:2011-11-26 11:38:24
【问题描述】:

我正在使用 CodeIgniter 版本 2.1 并尝试使用 header.php 链接我的视图中的图像、样式表、javascript 文件等资产:

<link href="<?php base_url();?>css/style.css" rel="stylesheet" />

我的控制器代码,调用视图:

<?php
class Main extends CI_Controller{
    public function index() {
        $this->load->view('header');
}
  • 我试图从中加载资产的视图文件位于 ../application/views/header.php
  • css 文件已加载: ../application/views/css/style.css

这不起作用。我得到 404 - Page not found 错误。然后,我尝试将 css/style.css 移到 webroot 中的 ../application 目录之外。令我惊讶的是,在 webroot(outsite ../application/views) 中拥有资产似乎效果很好。

现在, 我的问题是

  1. 将我们的资产直接放在 webroot、外部../application 目录中的方法是否正确?如果是/否,那为什么?
  2. 如果直接在 webroot 中拥有资产是个好主意,那么我是否也应该在 webroot 中移动 ../application/views 目录?怎么样?

PS:我是 CodeIgniter 框架的新手,所以不了解最佳实践

【问题讨论】:

    标签: codeigniter php


    【解决方案1】:

    如果您看到this,即.htaccess 用于从url 中删除index.php 的部分,则具有重写条件:

     RewriteCond $1 !^(index\.php|images|robots\.txt)
    

    在这一行中,images 是一个在 mod 重写时将被忽略的文件夹。因此,您可以将其替换为资产,将所有直接链接文件放在那里,然后愉快地使用它们。

     RewriteCond $1 !^(index\.php|assets|robots\.txt)
    

    编辑:我的错,没有看到提出问题的日期。不过,应该对某人有用。

    【讨论】:

    • RewriteCond $1 !^(index\.php|assets|robots\.txt) 当我使用它时一切都很好我正在查看我的控制器示例:website.com/controller 但是当我使用我的控制器的任何功能时它不起作用示例:website.com/controller/index
    • @shaz3e: 你也在用RewriteRule ^(.*)$ /index.php/$1 [L] 吗?
    【解决方案2】:

    最好将您的资产放在 webroot 文件夹中。当从服务器请求评估时(取决于您的设置),它将从根目录开始并向下工作。

    http://yoursite.com/application/views/css/mystyles.css
    

    如果它在根目录中,你只需要从那里去

    http://yoursite.com/css/mystyles.css

    虽然可能值得将它们全部放在一个文件夹 (/assets) 中以保持它们的包含,以及编写更有效的重写规则的能力(如果您试图从 url 中删除 index.php)忽略单个文件夹而不是所有单个文件夹(/css、/js 等)

    对于views文件夹,最好把它放在application文件夹中,因为CodeIgniter有一个内置的加载器,当你使用代码$this-&gt;load-&gt;view('myview')时,它会自动检查/application/views的视图文件

    虽然有一些方法可以移动视图文件夹,但如果您是 CI 新手,最好暂时将其保留在那里。

    【讨论】:

    • 谢谢,将资产移出到 webroot 似乎是个好主意 :)
    【解决方案3】:

    对于链接 css,您可以执行以下操作:

    echo link_tag('css/mystyles.css');

    检查此参考:http://codeigniter.com/user_guide/helpers/html_helper.html

    【讨论】:

    • 在我看来将echo link_tag(css/style.css) 生成html &lt;link href="http://localhost/phplogin/css/style.css" rel="stylesheet" type="text/css"&gt;。此位置位于../application/ 目录之外的点。直接在 webroot 中,但我的 css 位于../application/views/css/style.css。因此,我得到 404 - page not found。知道如何链接到../application/views 还是应该考虑将我的视图移到../application 之外,直接在webroot 中?
    猜你喜欢
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多