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

时间:2011-07-08 21:34:11

标签: codeigniter web-applications frameworks codeigniter-2

将css文件夹和图像文件夹放在哪里可以接受?我在视图文件夹里面思考?但是,控制器总是将路径重新路由到基本URL,因此我必须将.html文件中的路径指定到它所在的位置,这是多余的。

13 个答案:

答案 0 :(得分:185)

我有这样的设置:

  • 应用
  • 系统
  • 资产
    • JS​​
    • IMGS
    • CSS

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

<强>应用/助手/ utility_helper.php:

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

我通常会在同一个文件中保留与此类似的常用例程,并使用codeigniter的自动加载配置自动加载它。

  

注意:base_url()访问的自动加载网址助手。

<强>应用/配置/ autoload.php:

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

然后,您可以在整个代码中访问asset_url()

答案 1 :(得分:48)

不,在views文件夹里面不好。

查找: 您的项目必须有3个基本文件夹:

系统 //这是CI框架,触摸此文件的理由不多

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

公开 // 这必须是你的文件

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

在公共文件夹中,您应该提供公开信息,浏览器可以看到的内容,以及查找文件夹的常见信息:images,js,css;所以你的结构将是:

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

答案 2 :(得分:14)

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

文件夹结构

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

要编辑的文件

  1. <强> .htaccess*

      

    对项目的所有请求都将重写为 public / 目录   使它成为文档根目录。这一步确保内部   项目文件夹保持隐藏不被公众查看,从而消除   这种安全威胁。 - Phalconphp Doc

    <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';
    
  4. 现在您将 public 文件夹用作 base_url()."public/[YOUR ASSET FOLDER]"

    希望这会有所帮助:)

答案 3 :(得分:11)

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

答案 4 :(得分:7)

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

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

现在你必须致电<?php echo base_url()."/public/yourdirectory/yuorfile";?> 您可以根据需要在“public”目录中添加子目录。

答案 5 :(得分:4)

无论你把CSS文件放在哪里,你都可以简单地使用CodeIgniter&#34; html&#34; helper名为link_tag()。您可以应用这样的帮助:

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

由您决定将CSS文件放在最合适的位置(在您看来)。您必须自动加载&#34; html&#34;帮助或单独加载它以使用它。

人们一直建议使用base_url()来实现这一点,但实际上并不是&#34; CodeIgniter&#34;这样做的方式(我认为这个问题有一些重复)。这将起作用,但使用框架的原因之一是使用其中的预制函数。

codeigniter中有许多助手来做这种事情。

答案 6 :(得分: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>

答案 7 :(得分:3)

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

  • 系统
  • 应用
  • user_guide
  • 资产
    • 图像
    • JS​​
    • css

这就是你应该将images,css和js文件放在assets文件夹中的位置。

答案 8 :(得分:2)

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

应用程序
查看
资产

canActivate

... 当您想在页面中加载该文件时,可以按以下方式使用base_url()函数: css style.css 并确保将您项目的base_url添加到config.php文件中,如下所示:

<head>
<link rel='stylesheet' href='<?php echo base_url();?>assets/css/style.css'>
</head>

答案 9 :(得分:1)

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

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

目录树看起来像这样:

  • / application /
  • / public /
  • / 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]

答案 10 :(得分:0)

您好我们的结构就像 应用程序,系统,user_guide

在所有文件夹附近创建文件夹名称资产,然后在此资源文件夹中创建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"> 

答案 11 :(得分:0)

我只是想补充一点,这个问题可能更简单-

这个问题我已经花了好几个小时了-我已经阅读了所有解决方案,但没有任何效果。然后,我设法检查了实际的文件名。

我有“ image.jpg.jpg”而不是“ image.jpg”。

如果使用$ ls public/..path to image assets../,则可以快速检查文件名。

听起来很愚蠢,但在这里给出所有技术建议后,我从没想过要像文件名那样简单。

答案 12 :(得分:-2)

link_tag()帮助显然是这样做的方法。将你的css放在它通常所属的位置,在site_root / css /中,然后使用帮助器:

来自The CodeIgniter docs...

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

输出

<link href="http://example.com/css/mystyles.css" rel="stylesheet" type="text/css" />