我在哪里将图像文件,css,js等放在Codeigniter中?


144

将css文件夹和图像文件文件夹放在哪里可以接受?我在查看文件夹中的内容吗?但是,控制器总是将路径重新路由到基本url,因此我必须在.html文件中指定其所在的路径,这是多余的。

Answers:


202

我有这样的设置:

  • 应用
  • 系统
  • 资产
    • js
    • imgs
    • 的CSS

然后,我有一个辅助函数,该函数根据我的设置简单地返回其完整路径,类似于:

application / helpers / utility_helper.php:

function asset_url(){
   return base_url().'assets/';
}

我通常将与该文件相似的通用例程保存在同一文件中,并使用codeigniter的自动加载配置自动加载。

注意:自动加载URL助手以进行base_url()访问。

application / config / autoload.php:

$autoload['helper'] = array('url','utility');

然后,您将可以访问asset_url()整个代码。


1
嗨eddie,我想知道您将功能代码放在哪里。我应该把它放在file_helper.php中吗?
kebyang

3
@KebyangBlabla,您好:我已经为我的答案提供了更多信息,可以为您提供帮助。
Eddie 2013年

10
要访问“ baseurl()”,您还需要包括“ url”帮助程序,如下所示:$autoload['helper'] = array('url', 'utility');
Jeffrey

更好的方法可能是将您的Assets文件夹放在Web根目录(我的名字是public_html)文件夹中,然后将CI放在Web根目录上方的目录中。
Nate Nolting

3
如果其他人也喜欢我,请澄清一下,您可以像这样<?= asset_url();?> css / css.css进行访问
JonYork 2014年

50

不,在views文件夹内不好。

外观:您的项目上必须具有3个基本文件夹:

系统 //这是CI框架,没有太多理由要触摸此文件

application //这是您的逻辑所在,是构成应用程序的文件

公共 // 这必须是您的documentroot

出于安全原因,最好将框架和应用程序保留在documentroot(public_html,htdocs,public,www ...等)之外

在您的公用文件夹中,应将您的公用信息,浏览器可以看到的内容,找到文件夹的常用信息放在其中:images,js,css; 因此您的结构将是:

|- system/
|- application/
|---- models/
|---- views/
|---- controllers/
|- public/
|---- images/
|---- js/
|---- css/
|---- index.php
|---- .htaccess

1
公用文件夹中的index.php是什么?是404文件吗?谢谢
DeLe

抱歉,延迟,但对于以下原因:T index.php文件将是将捕获请求并调用框架其余部分的文件。
Juan Jo

@Juan Jo ..我正在使用CodeIgniter-3.0.6。找不到任何名为的文件夹public。添加具有相同名称的文件夹是否有问题。
Akhil Vijay

@AkhilVijay您不会在codeigniter文件夹中找到它,而该文件夹将在您将其部署到任何服务器上时出现
Anwar Hossain

与codeigniter一起工作的最佳方法是使用.htaccessfor删除/index.php?并调用公用文件夹base_url().'public/yourfolder';
Robert Blasco Villarroya

16

这就是我处理公共资产的方式。在这里,我使用Phalcon PHP的Bootstrap方法。

资料夹结构

|-.htaccess*
|-application/
|-public/
  |-.htaccess**
  |-index.php***
  |-css/
  |-js/
  |-img/
  |-font/
  |-upload/
|-system

要编辑的文件

  1. .htaccess*

    对项目的所有请求都将被重写到public /目录,使其成为文档根目录。此步骤可确保内部项目文件夹保持隐藏状态,以防止公开查看,从而消除了此类安全威胁。- Phalconphp文件

    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteRule  ^$ public/    [L]
        RewriteRule  (.*) public/$1 [L]
    </IfModule>
  2. .htaccess**

    规则将检查所请求的文件是否存在,如果存在,则不必由Web服务器模块重写。- Phalconphp文件

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php/$1 [QSA,L]
    </IfModule>
  3. index.php***

    修改application路径和system路径为

    $system_path = '../system';
    $application_folder = '../application';

现在,您将 public文件夹用作base_url()."public/[YOUR ASSET FOLDER]"

希望这可以帮助 :)


您是否测试了上面的代码,我认为最后一行有错误,您将所有请求重定向至/public,为什么base_url ()."public/[...!应该是公正的base_url ()."/[YOUR ASSET FOLDER]"
Kerkouch

12

我通常将所有类似的文件放入应用程序根目录下的“ assets”文件夹中,然后确保使用Asset_Helper指向这些文件。这就是CodeIgniter的建议。


7

没有人说您需要修改.htacces并在重写条件下添加目录。我已经在根目录中创建了目录“ public”以及“ system”,“ application”,“ index.php”。并按如下方式编辑.htaccess文件:

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

现在,您只需调用即可。<?php echo base_url()."/public/yourdirectory/yuorfile";?> 您可以根据需要在“ public”目录中添加子目录。


我迟到了数十亿年,但是如果有人在阅读,这是我最初的解决方案,但是如果您要通过虚拟主机管理访问,我认为将虚拟主机指向公用文件夹并保留.htaccess配置。无论如何都支持,因为这个答案将我
引向

5

无论将CSS文件放在何处,都可以简单地使用名为link_tag()的CodeIgniter“ html”帮助器。您将应用此帮助程序,如下所示:

echo link_tag('folder/subfolder/stylesheet.css');

您可以根据自己的意愿将CSS文件放在最合适的位置。您将必须自动加载“ html”助手或单独加载它以使用它。

人们不断建议使用base_url()来实现此目的,但实际上并不是实现此目的的“ CodeIgniter”方式(我认为这个问题有些重复)。那会起作用,但是使用框架的原因之一是使用框架中的预制功能。

Codeigniter中有很多帮助者可以做这种事情。


4

添加任何名称的文件夹,例如public并添加.htaccess文件,并从所有方面允许,在此文件夹中,您的所有文件和所有文件夹都不会出错禁止访问!这样使用

<link href="<?php echo base_url(); ?>application/public/css/style.css" rel="stylesheet" type="text/css"  />
<script type="text/javascript" src="<?php echo base_url(); ?>application/public/js/javascript.js"></script>

4

我正在使用最新版本的CodeIgniter 3.1.0。它的文件夹结构是:

  • 系统
  • 应用
  • 用户指南
  • 资产
    • 图片
    • js
    • 的CSS

那是您应该将图像,css和js文件放入资产文件夹的地方。


3

我使用以下文件夹结构:

application 
system 
static
    admin
        js
        css
        images
    public
        js
        css
        images
    uploads
        original
        thumbs

2

(我是Codeigniter的新手,所以我不知道这是否是最佳建议)

我将公用文件保存在公用文件夹中。他们在那里是合乎逻辑的,并且我不想将Codeigniter用于不需要使用它的东西。

目录树如下所示:

  • /应用/
  • /上市/
  • / public / css /
  • / public / img /
  • / public / js /
  • /系统/

我在/ public /中保留的唯一文件是Codeigniter的index.php和我的.htaccess文件:

RewriteEngine On
RewriteBase /

RewriteRule ^css/ - [L]
RewriteRule ^img/ - [L]
RewriteRule ^js/ - [L]

RewriteRule ^index.php(.*)$ - [L]
RewriteRule ^(.*)$ /index.php?/$1 [L]

2

您可以将css文件夹放在项目目录中的assest文件夹(您可以将其命名为任意名称)内,如下所示:

- ci_app
- application 
- views      
- assets 
  - css 
    - style.css 

...当您想在页面中加载该文件时,可以按以下方式使用base_url()函数: <head> <link rel='stylesheet' href='<?php echo base_url();?>assets/css/style.css'> </head> 并且确保将项目的base_url添加到config.php文件中,如下所示:

$config['base_url'] = 'http://localhost/ci_app';

0

嗨,我们的架构就像应用程序,系统,用户指南

在所有文件夹附近创建一个文件夹名称资产,然后在此Assets文件夹内创建css和javascript和images文件夹,将所有css js插入文件夹

现在转到header.php并像这样调用CSS。

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

-2

link_tag()助手显然是做到这一点的方式。将您的CSS通常放置在site_root / css /中,然后使用帮助器:

CodeIgniter文档...

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

输出量

<link href="http://example.com/css/mystyles.css" rel="stylesheet" type="text/css" />
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.