144

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

4

14 回答 14

206

我有这样的设置:

  • 应用
  • 系统
  • 资产
    • js
    • 图片
    • css

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

应用程序/helpers/utility_helper.php:

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

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

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

应用程序/配置/autoload.php:

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

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

于 2011-07-08T21:43:22.040 回答
50

不,views 文件夹里面不好。

看:您的项目中必须有 3 个基本文件夹:

system // 这是 CI 框架,没有太多理由去触碰这些文件

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

public //这必须是你的文档根目录

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

在您的公共文件夹中,您应该放置您的公共信息,浏览器可以看到的内容,找到文件夹的常见方法:图像,js,css;所以你的结构将是:

|- system/
|- application/
|---- models/
|---- views/
|---- controllers/
|- public/
|---- images/
|---- js/
|---- css/
|---- index.php
|---- .htaccess
于 2011-07-09T04:40:35.867 回答
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]"

希望这可以帮助 :)

于 2014-03-14T17:56:32.430 回答
12

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

于 2011-07-08T21:38:26.877 回答
7

没有人说需要修改 .htacces 并在 rewrite 条件下添加目录。我在根目录中创建了一个目录“public”以及“system”、“application”、“index.php”。并像这样编辑 .htaccess 文件:

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

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

于 2013-02-04T16:04:18.363 回答
5

无论您将 CSS 文件放在何处,您都可以简单地使用名为 link_tag() 的 CodeIgniter “html”帮助程序。你可以像这样应用这个助手:

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

将 CSS 文件放置在最合适的位置(在您看来)取决于您。您必须自动加载“html”帮助程序或单独加载它以使用它。

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

codeigniter 中有很多助手可以做这种事情。

于 2013-05-18T10:06:26.517 回答
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>
于 2013-06-06T12:22:38.140 回答
4

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

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

这就是您应该将图像、css 和 js 文件放在 assets 文件夹中的地方。

于 2016-08-28T11:51:08.443 回答
3

我使用以下文件夹结构:

application 
system 
static
    admin
        js
        css
        images
    public
        js
        css
        images
    uploads
        original
        thumbs
于 2015-09-14T11:35:21.267 回答
2

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

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

目录树如下所示:

  • /应用/
  • /上市/
  • /公共/css/
  • /公共/img/
  • /公共/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]
于 2015-04-07T17:32:08.543 回答
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';
于 2019-01-10T14:46:46.367 回答
0

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

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

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

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

听起来很愚蠢,但考虑到这里的所有技术建议,我从没想过要看看像文件名这样简单的东西。

于 2020-08-26T11:55:28.543 回答
0

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

在所有文件夹附近创建一个文件夹名称资产,然后在此资产文件夹中创建 css 和 javascript 和图像文件夹将所有 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"> 
于 2016-03-01T07:06:29.717 回答
-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" />
于 2015-04-20T23:11:20.630 回答