Jawaban:
Saya memiliki pengaturan seperti ini:
Saya kemudian memiliki fungsi pembantu yang hanya mengembalikan path lengkap ke ini tergantung pada pengaturan saya, sesuatu yang mirip dengan:
application / helpers / utility_helper.php:
function asset_url(){
return base_url().'assets/';
}
Saya biasanya akan menjaga rutinitas umum yang serupa dengan ini di file yang sama dan otomatis memuatnya dengan konfigurasi autoload codeigniter.
Catatan: autoload URL helper untuk
base_url()
akses.
application / config / autoload.php:
$autoload['helper'] = array('url','utility');
Anda kemudian akan memiliki akses ke asset_url()
seluruh kode Anda.
$autoload['helper'] = array('url', 'utility');
Tidak, di dalam folder views tidak bagus.
Lihat: Anda harus memiliki 3 folder dasar pada proyek Anda:
sistem // Ini adalah kerangka CI tidak ada banyak alasan untuk menyentuh file ini
aplikasi // di sinilah logika Anda, file yang membuat aplikasi ,
publik // ini harus menjadi documentroot Anda
Untuk alasan keamanan, lebih baik menyimpan kerangka kerja Anda dan aplikasi di luar documentroot Anda, (public_html, htdocs, public, www ... dll)
Di dalam folder publik Anda, Anda harus meletakkan informasi publik Anda, apa yang dapat dilihat browser, yang umum untuk menemukan folder: gambar, js, css; jadi struktur Anda akan:
|- system/
|- application/
|---- models/
|---- views/
|---- controllers/
|- public/
|---- images/
|---- js/
|---- css/
|---- index.php
|---- .htaccess
public
Apakah ada masalah untuk menambahkan folder dengan nama yang sama.
.htaccess
untuk menghapus /index.php?
dan memanggil folder publik denganbase_url().'public/yourfolder';
Beginilah cara saya menangani aset publik. Di sini saya menggunakan Phalcon PHP metode Bootstrap .
|-.htaccess*
|-application/
|-public/
|-.htaccess**
|-index.php***
|-css/
|-js/
|-img/
|-font/
|-upload/
|-system
.htaccess*
Semua permintaan untuk proyek akan ditulis ulang ke direktori publik / menjadikannya root dokumen. Langkah ini memastikan bahwa folder proyek internal tetap tersembunyi dari tampilan publik dan dengan demikian menghilangkan ancaman keamanan semacam ini. - Phalconphp Doc
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
.htaccess**
Aturan akan memeriksa apakah file yang diminta ada dan, jika ada, itu tidak harus ditulis ulang oleh modul server web. - 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***
Ubah application
jalur dan system
jalur sebagai,
$system_path = '../system';
$application_folder = '../application';
Sekarang Anda menggunakan public
folder sebagaibase_url()."public/[YOUR ASSET FOLDER]"
Semoga ini membantu :)
/public
mengapa base_url ()."public/[...
? Seharusnya adil base_url ()."/[YOUR ASSET FOLDER]"
.
Saya biasanya meletakkan semua file saya seperti itu ke folder "aset" di root aplikasi, dan kemudian saya pastikan untuk menggunakan Asset_Helper untuk menunjuk ke file-file itu untuk saya. Inilah yang disarankan CodeIgniter.
Tidak ada yang mengatakan bahwa Anda perlu memodifikasi .htacces dan menambahkan direktori dalam kondisi penulisan ulang. Saya telah membuat direktori "publik" di direktori root bersama dengan "system", "application", "index.php". dan mengedit file .htaccess seperti ini:
RewriteCond $1 !^(index\.php|public|robots\.txt)
Sekarang Anda hanya perlu menelepon <?php echo base_url()."/public/yourdirectory/yuorfile";?>
Anda dapat menambahkan subdirektori di dalam direktori "publik" sesuka Anda.
Di mana pun Anda meletakkan file CSS, Anda cukup menggunakan pembantu CodeIgniter "html" yang disebut link_tag (). Anda akan menerapkan penolong ini seperti ini:
echo link_tag('folder/subfolder/stylesheet.css');
Terserah Anda untuk menemukan file CSS di tempat yang paling tepat (menurut Anda). Anda harus memuat secara otomatis pembantu "html" atau memuatnya secara terpisah untuk menggunakannya.
Orang-orang terus menyarankan penggunaan base_url () untuk mencapai hal ini tetapi sebenarnya sebenarnya bukan cara "CodeIgniter" untuk melakukannya (saya pikir pertanyaan ini memiliki beberapa duplikat). Itu akan berhasil tetapi salah satu alasan untuk menggunakan kerangka kerja adalah untuk menggunakan fungsi yang sudah dibuat sebelumnya di dalamnya.
Ada banyak pembantu dalam codeigniter untuk melakukan hal semacam ini.
tambahkan satu folder nama apa saja mis. publik dan tambahkan file .htaccess dan tulis izinkan dari semua artinya, dalam folder ini semua file Anda dan semua folder tidak akan memberikan kesalahan Akses terlarang! gunakan seperti ini
<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>
Saya menggunakan versi terbaru dari CodeIgniter 3.1.0. Struktur folder itu adalah:
Di situlah Anda harus meletakkan file gambar, css dan js di dalam folder aset.
Saya menggunakan struktur folder berikut:
application
system
static
admin
js
css
images
public
js
css
images
uploads
original
thumbs
(Saya baru mengenal Codeigniter, jadi saya tidak tahu apakah ini saran terbaik)
Saya menyimpan file yang tersedia untuk umum di folder publik saya. Adalah logis untuk mereka ada di sana, dan saya tidak ingin menggunakan Codeigniter untuk sesuatu yang saya tidak perlu menggunakannya.
Pohon direktori terlihat seperti ini:
Satu-satunya file yang saya simpan di / publik / adalah index.php Codeigniter, dan file .htaccess saya:
RewriteEngine On
RewriteBase /
RewriteRule ^css/ - [L]
RewriteRule ^img/ - [L]
RewriteRule ^js/ - [L]
RewriteRule ^index.php(.*)$ - [L]
RewriteRule ^(.*)$ /index.php?/$1 [L]
Anda dapat meletakkan folder css di dalam folder assest (beri nama apa saja) di direktori proyek Anda sebagai:
- ci_app
- application
- views
- assets
- css
- style.css
... ketika Anda ingin memuat file itu dalam sebuah halaman, Anda dapat menggunakan fungsi base_url () seperti ini:
<head>
<link rel='stylesheet' href='<?php echo base_url();?>assets/css/style.css'>
</head>
dan Anda yakin untuk menambahkan base_url proyek Anda di file config.php seperti ini:
$config['base_url'] = 'http://localhost/ci_app';
Hai struktur kami seperti Aplikasi, sistem, user_guide
buat aset nama folder tepat di dekat semua folder dan kemudian di dalam folder aset ini buat css dan javascript dan folder gambar letakkan semua css js Anda di dalam folder
sekarang buka header.php dan panggil css seperti ini.
<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">
The link_tag()
helper jelas merupakan cara untuk melakukan hal ini. Letakkan css Anda di tempat yang seharusnya, di site_root / css / dan gunakan helper:
echo link_tag('css/mystyles.css');
Keluaran
<link href="http://example.com/css/mystyles.css" rel="stylesheet" type="text/css" />