Di mana saya meletakkan file gambar, css, js, dll di Codeigniter?

144

Di mana bisa meletakkan folder css dan folder file gambar? Saya berpikir di dalam folder tampilan? Namun controller selalu mengubah rute path ke url dasar jadi saya harus menentukan path dalam file .html ke tempat ia duduk, yang berlebihan.

triq
sumber

Jawaban:

202

Saya memiliki pengaturan seperti ini:

  • aplikasi
  • sistem
  • aktiva
    • js
    • img
    • css

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.

Eddie
sumber
1
hai eddie, saya ingin tahu di mana Anda meletakkan kode fungsi Anda .. haruskah saya meletakkannya di file_helper.php?
kebyang
3
Hai @KebyangBlabla Saya telah memperbarui jawaban saya dengan sedikit lebih banyak informasi yang dapat membantu Anda.
Eddie
10
Untuk mendapatkan akses ke 'baseurl ()' Anda juga harus menyertakan pembantu 'url', seperti ini:$autoload['helper'] = array('url', 'utility');
Jeffrey
Satu yang lebih baik adalah memiliki folder aset Anda di folder web root (milikku adalah public_html) dan kemudian CI dalam direktori di atas web root.
Nate Nolting
3
Jika orang lain seperti saya, untuk memperjelas, Anda mengaksesnya seperti ini <? = Asset_url ();?> Css / css.css
JonYork
50

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
Juan Jo
sumber
1
apa itu index.php di folder publik? apakah itu file 404? terima kasih
DeLe
Maaf atas keterlambatan, tetapi untuk lo: T File index.php akan menjadi file yang akan menangkap permintaan dan akan memanggil sisa kerangka kerja.
Juan Jo
@ Jo Jo .. Saya menggunakan CodeIgniter-3.0.6. Saya tidak dapat menemukan folder bernama. publicApakah ada masalah untuk menambahkan folder dengan nama yang sama.
Akhil Vijay
@AkhilVijay Anda tidak akan menemukannya di folder codeigniter Anda, folder akan ketika Anda menyebarkannya di server apa pun
Anwar Hossain
cara terbaik untuk bekerja dengan codeigniter itu membuat .htaccessuntuk menghapus /index.php?dan memanggil folder publik denganbase_url().'public/yourfolder';
Robert Blasco Villarroya
16

Beginilah cara saya menangani aset publik. Di sini saya menggunakan Phalcon PHP metode Bootstrap .

Struktur Folder

|-.htaccess*
|-application/
|-public/
  |-.htaccess**
  |-index.php***
  |-css/
  |-js/
  |-img/
  |-font/
  |-upload/
|-system

File untuk diedit

  1. .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>
  2. .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>
  3. index.php***

    Ubah applicationjalur dan systemjalur sebagai,

    $system_path = '../system';
    $application_folder = '../application';

Sekarang Anda menggunakan publicfolder sebagaibase_url()."public/[YOUR ASSET FOLDER]"

Semoga ini membantu :)

Ijas Ameenudeen
sumber
Apakah Anda menguji kode di atas, saya pikir ada kesalahan pada baris terakhir, Anda mengarahkan semua permintaan ke /publicmengapa base_url ()."public/[...? Seharusnya adil base_url ()."/[YOUR ASSET FOLDER]".
Kerkouch
12

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.

warga negara samb
sumber
7

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.

Kreker
sumber
Saya terlambat jutaan tahun, tetapi jika ada yang membaca ini, jawaban ini adalah solusi awal saya, tetapi jika Anda mengelola akses melalui host virtual, saya pikir adalah ide yang lebih baik untuk mengarahkan virtual host ke folder publik dan menyimpannya konfigurasi .htaccess.
Tetap positif
5

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.

Cheesus Toast
sumber
4

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>
Sandeep Mehra
sumber
4

Saya menggunakan versi terbaru dari CodeIgniter 3.1.0. Struktur folder itu adalah:

  • sistem
  • aplikasi
  • panduan pengguna
  • aktiva
    • gambar-gambar
    • js
    • css

Di situlah Anda harus meletakkan file gambar, css dan js di dalam folder aset.

paling keren
sumber
3

Saya menggunakan struktur folder berikut:

application 
system 
static
    admin
        js
        css
        images
    public
        js
        css
        images
    uploads
        original
        thumbs
Kalajengking
sumber
2

(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:

  • /aplikasi/
  • /publik/
  • / publik / css /
  • / publik / img /
  • / publik / js /
  • /sistem/

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]
Anthony Scaife
sumber
2

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';
Rabab Sh
sumber
0

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"> 
Piyush Dhanotiya
sumber
-2

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:

Dari dokumen CodeIgniter ...

echo link_tag('css/mystyles.css');

Keluaran

<link href="http://example.com/css/mystyles.css" rel="stylesheet" type="text/css" />
Stephen C
sumber