【发布时间】:2011-10-01 15:02:15
【问题描述】:
css文件夹和图片文件夹可以放哪里?我在想视图文件夹里面?但是控制器总是将路径重新路由到基本 url,所以我必须在 .html 文件中指定路径到它所在的位置,这是多余的。
【问题讨论】:
标签: codeigniter web-applications frameworks codeigniter-2
css文件夹和图片文件夹可以放哪里?我在想视图文件夹里面?但是控制器总是将路径重新路由到基本 url,所以我必须在 .html 文件中指定路径到它所在的位置,这是多余的。
【问题讨论】:
标签: codeigniter web-applications frameworks codeigniter-2
我有这样的设置:
然后我有一个辅助函数,它根据我的设置简单地返回完整路径,类似于:
application/helpers/utility_helper.php:
function asset_url(){
return base_url().'assets/';
}
我通常会将与此类似的常用例程保留在同一个文件中,并使用 codeigniter 的自动加载配置自动加载它。
注意:
base_url()访问的自动加载 URL 帮助程序。
application/config/autoload.php:
$autoload['helper'] = array('url','utility');
然后,您将可以在整个代码中访问asset_url()。
【讨论】:
$autoload['helper'] = array('url', 'utility');
不,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
【讨论】:
public的文件夹。添加同名文件夹是否有问题。
.htaccess 删除 /index.php? 并使用 base_url().'public/yourfolder'; 调用公用文件夹
这就是我处理公共资产的方式。这里我使用 Phalcon PHP 的 Bootstrap 方法。
|-.htaccess*
|-application/
|-public/
|-.htaccess**
|-index.php***
|-css/
|-js/
|-img/
|-font/
|-upload/
|-system
.htaccess*
对项目的所有请求都将被重写到 public/ 目录 使其成为文档根目录。此步骤可确保内部 项目文件夹保持隐藏,不让公众查看,从而消除 此类安全威胁。 - Phalconphp 文档
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
.htaccess**
规则将检查请求的文件是否存在,如果存在,则 不必由 Web 服务器模块重写。 - Phalconphp 文档
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
</IfModule>
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]"。
我通常将所有类似的文件放入应用程序根目录中的“资产”文件夹中,然后确保使用Asset_Helper 为我指向这些文件。这就是 CodeIgniter 的建议。
【讨论】:
没有人说你需要修改.htacces并在重写条件下添加目录。 我在根目录中创建了一个目录“public”以及“system”、“application”、“index.php”。并像这样编辑 .htaccess 文件:
RewriteCond $1 !^(index\.php|public|robots\.txt)
现在您只需致电<?php echo base_url()."/public/yourdirectory/yuorfile";?>
您可以根据需要在“公共”目录中添加子目录。
【讨论】:
无论您将 CSS 文件放在何处,您都可以简单地使用名为 link_tag() 的 CodeIgniter “html”帮助程序。你可以像这样应用这个助手:
echo link_tag('folder/subfolder/stylesheet.css');
您可以自行决定将 CSS 文件放在最合适的位置(您认为)。您必须自动加载“html”帮助程序或单独加载它以使用它。
人们一直建议使用 base_url() 来实现这一点,但实际上它并不是真正的“CodeIgniter”方式(我认为这个问题有一些重复)。这将起作用,但使用框架的原因之一是使用其中的预制功能。
codeigniter 中有很多助手可以做这种事情。
【讨论】:
添加一个文件夹,任何名称,例如 public 并添加 .htaccess 文件并写入 allow from all 这意味着,在此文件夹中,您的所有文件和所有文件夹都不会出错禁止访问!这样使用它
<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>
【讨论】:
我正在使用最新版本的 CodeIgniter 3.1.0。 它的文件夹结构是:
您应该将图片、css 和 js 文件放在 assets 文件夹中。
【讨论】:
我使用以下文件夹结构:
application
system
static
admin
js
css
images
public
js
css
images
uploads
original
thumbs
【讨论】:
(我是 Codeigniter 的新手,所以我不知道这是不是最好的建议)
我将公开可用的文件保存在我的公用文件夹中。 他们在那里是合乎逻辑的,我不想将 Codeigniter 用于我不需要的事情。
目录树如下所示:
我保留在 /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]
【讨论】:
您可以将 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';
【讨论】:
嗨,我们的结构是这样的 应用、系统、用户指南
在所有文件夹附近创建一个文件夹名称 assets,然后在此 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">
【讨论】:
我只是想补充一点,问题可能更简单-
我一直在为这个问题挠头好几个小时 - 我已经阅读了所有解决方案,但没有任何效果。然后我设法检查了实际的文件名。
我有“image.jpg.jpg”而不是“image.jpg”。
如果您使用$ ls public/..path to image assets../,您可以快速查看文件名。
听起来很愚蠢,但考虑到这里的所有技术建议,我从没想过看文件名这么简单的东西。
【讨论】:
link_tag() 助手显然是执行此操作的方法。将您的 css 放在它通常所属的位置,在 site_root/css/ 中,然后使用帮助器:
echo link_tag('css/mystyles.css');
输出
<link href="http://example.com/css/mystyles.css" rel="stylesheet" type="text/css" />
【讨论】: