Where do I put image files, css, js, etc. in Codeigniter?
I have a setup like this:
- application
- system
- assets
- js
- imgs
- css
I then have a helper function that simply returns the full path to this depending on my setup, something similar to:
application/helpers/utility_helper.php:
function asset_url(){ return base_url().'assets/';}
I will usually keep common routines similar to this in the same file and autoload it with codeigniter's autoload configuration.
Note: autoload URL helper for
base_url()
access.
application/config/autoload.php:
$autoload['helper'] = array('url','utility');
You will then have access to asset_url()
throughout your code.
No, inside the views folder is not good.
Look:You must have 3 basic folders on your project:
system // This is CI framework there are not much reasons to touch this files
application //this is where your logic goes, the files that makes the application,
public // this must be your documentroot
For security reasons its better to keep your framework and the application outside your documentroot,(public_html, htdocs, public, www... etc)
Inside your public folder, you should put your public info, what the browsers can see, its common to find the folders: images, js, css; so your structure will be:
|- system/|- application/|---- models/|---- views/|---- controllers/|- public/|---- images/|---- js/|---- css/|---- index.php|---- .htaccess
This is how I handle the public assets. Here I use Phalcon PHP's Bootstrap method.
Folder Structure
|-.htaccess*|-application/|-public/ |-.htaccess** |-index.php*** |-css/ |-js/ |-img/ |-font/ |-upload/|-system
Files to edit
.htaccess*
All requests to the project will be rewritten to the public/ directory making it the document root. This step ensures that the internal project folders remain hidden from public viewing and thus eliminates security threats of this kind. - Phalconphp Doc
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ public/ [L] RewriteRule (.*) public/$1 [L]</IfModule>
.htaccess**
Rules will check if the requested file exists and, if it does, it doesn’t have to be rewritten by the web server module. - Phalconphp Doc
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,L]</IfModule>
index.php***
Modify the
application
path and thesystem
path as,$system_path = '../system';$application_folder = '../application';
Now you use the public
folder as base_url()."public/[YOUR ASSET FOLDER]"
Hope this helps :)