将css文件夹和图像文件夹放在哪里可以接受?我在想视图文件夹里面?但是,控制器总是将路径重新路由到基本 url,所以我必须在 .html 文件中指定路径到它所在的位置,这是多余的。
14 回答
我有这样的设置:
- 应用
- 系统
- 资产
- 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()
整个代码。
不,views 文件夹里面不好。
看:您的项目中必须有 3 个基本文件夹:
system // 这是 CI 框架,没有太多理由去触碰这些文件
应用程序 //这是您的逻辑所在,制作应用程序的文件,
public //这必须是你的文档根目录
出于安全原因,最好将框架和应用程序保留在文档根目录之外,(public_html、htdocs、public、www...等)
在您的公共文件夹中,您应该放置您的公共信息,浏览器可以看到的内容,找到文件夹的常见方法:图像,js,css;所以你的结构将是:
|- system/
|- application/
|---- models/
|---- views/
|---- controllers/
|- public/
|---- images/
|---- js/
|---- css/
|---- index.php
|---- .htaccess
这就是我处理公共资产的方式。这里我使用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]"
希望这可以帮助 :)
我通常将我所有的文件都放在应用程序根目录中的“资产”文件夹中,然后确保使用Asset_Helper为我指向这些文件。这就是 CodeIgniter 的建议。
没有人说需要修改 .htacces 并在 rewrite 条件下添加目录。我在根目录中创建了一个目录“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文件并从所有这意味着写入允许,在此文件夹中,您的所有文件和所有文件夹都不会给出错误访问被禁止!像这样使用它
<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。它的文件夹结构是:
- 系统
- 应用
- 用户指南
- 资产
- 图片
- js
- css
这就是您应该将图像、css 和 js 文件放在 assets 文件夹中的地方。
我使用以下文件夹结构:
application
system
static
admin
js
css
images
public
js
css
images
uploads
original
thumbs
(我是 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]
您可以将 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';
我只是想补充一点,问题可能更简单 -
我一直在为这个问题挠头好几个小时——我已经阅读了所有的解决方案,但没有任何效果。然后我设法检查了实际的文件名。
我有“ image.jpg.jpg
”而不是“ image.jpg
”。
如果您使用$ ls public/..path to image assets../
,您可以快速检查文件名。
听起来很愚蠢,但考虑到这里的所有技术建议,我从没想过要看看像文件名这样简单的东西。
嗨,我们的结构就像应用程序、系统、用户指南
在所有文件夹附近创建一个文件夹名称资产,然后在此资产文件夹中创建 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">
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" />