Answers:
我有这样的设置:
然后,我有一个辅助函数,该函数根据我的设置简单地返回其完整路径,类似于:
application / helpers / utility_helper.php:
function asset_url(){
return base_url().'assets/';
}
我通常将与该文件相似的通用例程保存在同一文件中,并使用codeigniter的自动加载配置自动加载。
注意:自动加载URL助手以进行
base_url()
访问。
application / config / autoload.php:
$autoload['helper'] = array('url','utility');
然后,您将可以访问asset_url()
整个代码。
$autoload['helper'] = array('url', 'utility');
不,在views文件夹内不好。
外观:您的项目上必须具有3个基本文件夹:
系统 //这是CI框架,没有太多理由要触摸此文件
application //这是您的逻辑所在,是构成应用程序的文件,
公共 // 这必须是您的documentroot
出于安全原因,最好将框架和应用程序保留在documentroot(public_html,htdocs,public,www ...等)之外
在您的公用文件夹中,应将您的公用信息,浏览器可以看到的内容,找到文件夹的常用信息放在其中:images,js,css; 因此您的结构将是:
|- system/
|- application/
|---- models/
|---- views/
|---- controllers/
|- public/
|---- images/
|---- js/
|---- css/
|---- index.php
|---- .htaccess
public
。添加具有相同名称的文件夹是否有问题。
.htaccess
for删除/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]"
。
我通常将所有类似的文件放入应用程序根目录下的“ assets”文件夹中,然后确保使用Asset_Helper指向这些文件。这就是CodeIgniter的建议。
没有人说您需要修改.htacces并在重写条件下添加目录。我已经在根目录中创建了目录“ public”以及“ system”,“ application”,“ index.php”。并按如下方式编辑.htaccess文件:
RewriteCond $1 !^(index\.php|public|robots\.txt)
现在,您只需调用即可。<?php echo base_url()."/public/yourdirectory/yuorfile";?>
您可以根据需要在“ public”目录中添加子目录。
无论将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的新手,所以我不知道这是否是最佳建议)
我将公用文件保存在公用文件夹中。他们在那里是合乎逻辑的,并且我不想将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文件夹内创建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">
该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" />