我在Codeigniter中放置图像文件,css,js等?

tri*_*riq 139 frameworks codeigniter web-applications codeigniter-2

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

Edd*_*die 195

我有这样的设置:

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

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

应用程序/佣工/ utility_helper.php:

function asset_url(){
   return base_url().'assets/';
}
Run Code Online (Sandbox Code Playgroud)

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

注意:用于base_url()访问的自动加载URL帮助程序.

的application/config/autoload.php:

$autoload['helper'] = array('url','utility');
Run Code Online (Sandbox Code Playgroud)

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

  • 要访问'baseurl()',你还需要包含'url'帮助器,如下所示:``$ autoload ['helper'] = array('url','utility');`` (10认同)
  • 嗨@KebyangBlabla我已经用更多可以帮助你的信息更新了我的答案. (3认同)
  • 如果其他人像我一样澄清,你可以像这样访问<?= asset_url();?> css/css.css (3认同)

Jua*_* Jo 49

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

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

system //这是CI框架没有太多理由触摸这个文件

应用程序 //这是你的逻辑所在,创建应用程序的文件,

public // 这必须是你的文件

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

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

|- system/
|- application/
|---- models/
|---- views/
|---- controllers/
|- public/
|---- images/
|---- js/
|---- css/
|---- index.php
|---- .htaccess
Run Code Online (Sandbox Code Playgroud)


Ija*_*een 16

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

文件夹结构

|-.htaccess*
|-application/
|-public/
  |-.htaccess**
  |-index.php***
  |-css/
  |-js/
  |-img/
  |-font/
  |-upload/
|-system
Run Code Online (Sandbox Code Playgroud)

要编辑的文件

  1. .htaccess*

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

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

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

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

    application路径和system路径修改为,

    $system_path = '../system';
    $application_folder = '../application';
    
    Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助 :)


cit*_*onn 12

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


Kre*_*ker 7

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

RewriteCond $1 !^(index\.php|public|robots\.txt)
Run Code Online (Sandbox Code Playgroud)

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


Che*_*ast 5

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

echo link_tag('folder/subfolder/stylesheet.css');
Run Code Online (Sandbox Code Playgroud)

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

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

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