Codeigniter'a görüntü dosyalarını, css, js, vb. Nereye koyabilirim?


144

CSS klasörleri ve resim dosyası klasörleri nereye yerleştirilebilir? Görünüm klasörü içinde mi düşünüyordum? Ancak denetleyici her zaman temel url yolunu yeniden yönlendirir, bu nedenle yedekli olduğu .html dosyasında oturduğu yere yol belirtmek zorunda.

Yanıtlar:


202

Ben böyle bir kurulum var:

  • uygulama
  • sistem
  • varlıklar
    • js
    • Grntl
    • css

Sonra benim kurulum, benzer bir şey bağlı olarak bu tam yolu döndüren bir yardımcı işlevi var:

application / yardımcılar / utility_helper.php:

function asset_url(){
   return base_url().'assets/';
}

Genellikle buna benzer ortak rutinleri aynı dosyada tutacağım ve codeigniter'in otomatik yükleme yapılandırmasıyla otomatik olarak yükleyeceğim.

Not: base_url()erişim için otomatik yükleme URL yardımcısı .

Uygulama / yapılandırma / autoload.php:

$autoload['helper'] = array('url','utility');

Daha sonra asset_url()kodunuz boyunca erişime sahip olacaksınız .


1
merhaba eddie, fonksiyon kodunuzu nereye koyacağınızı merak ediyorum .. file_helper.php içine koymalıyım?
kebyang

3
Merhaba @KebyangBlabla Cevabımı size yardımcı olacak biraz daha bilgi ile güncelledim.
Eddie

10
'Baseurl ()' erişimine erişmek için 'url' yardımcısını da dahil etmeniz gerekir:$autoload['helper'] = array('url', 'utility');
Jeffrey

Daha iyi bir şey, web kök (benim madeni public_html) klasöründe bir varlıklar klasörü ve daha sonra web kökünün üzerindeki bir dizinde CI olması olabilir.
Nate Nolting

3
Diğerlerinin benim gibi olması durumunda, açıklığa kavuşturmak için, buna şu şekilde erişirsiniz <? = Asset_url ();?> Css / css.css
JonYork

50

Hayır, views klasörünün içinde iyi değil.

Bakın: Projenizde 3 temel klasörünüz olması gerekir:

system // Bu CI çerçevesi bu dosyalara dokunmak için fazla bir neden yok

uygulama // burası mantığınızın gittiği yer, uygulamayı yapan dosyalar ,

public // bu sizin doküman kökünüz olmalı

Güvenlik nedeniyle çerçevenizi ve uygulamanızı doküman kökünüzün dışında tutmak daha iyidir (public_html, htdocs, public, www ... etc)

Ortak klasörünüzün içine, genel bilgilerinizi, tarayıcıların görebileceklerini, klasörleri bulmak için ortak olanlarını koymalısınız: images, js, css; böylece yapınız şöyle olacaktır:

|- system/
|- application/
|---- models/
|---- views/
|---- controllers/
|- public/
|---- images/
|---- js/
|---- css/
|---- index.php
|---- .htaccess

1
ortak klasördeki index.php nedir? 404 dosyası nedir? teşekkürler
DeLe

Gecikme için özür dilerim, ancak lo: T: index.php dosyası, isteği yakalayacak ve çerçevenin geri kalanını çağıracak dosya olacaktır.
Juan Jo

@Juan Jo .. CodeIgniter-3.0.6 kullanıyorum. Adlı herhangi bir klasör bulamıyorum public. Aynı ada sahip bir klasör eklemek için herhangi bir sorun var.
Akhil Vijay

@AkhilVijay Eğer kodigniter klasörünüzde bulamazsınız, klasör herhangi bir sunucuda konuşlandırdığınızda olacaktır
Anwar Hossain

Codeigniter ile çalışmak için en iyi yolu .htaccesskaldırmak /index.php?ve ortak klasörü çağırmak için yapıyorbase_url().'public/yourfolder';
Robert Blasco Villarroya

16

Kamu varlıklarını bu şekilde ele alıyorum. Burada Phalcon PHP'nin Bootstrap yöntemini kullanıyorum.

Klasör Yapısı

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

Düzenlenecek dosyalar

  1. .htaccess*

    Projeye yapılan tüm istekler , belgeyi kök haline getiren genel / dizine yeniden yazılır . Bu adım, dahili proje klasörlerinin genel izlemeden gizli kalmasını sağlar ve böylece bu tür güvenlik tehditlerini ortadan kaldırır. - Phalconphp SPORCU BİLGİLERİ

    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteRule  ^$ public/    [L]
        RewriteRule  (.*) public/$1 [L]
    </IfModule>
  2. .htaccess**

    Kurallar, istenen dosyanın var olup olmadığını kontrol eder ve eğer varsa, web sunucusu modülü tarafından yeniden yazılması gerekmez. - Phalconphp SPORCU BİLGİLERİ

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php/$1 [QSA,L]
    </IfModule>
  3. index.php***

    Değiştir applicationyolunu ve systemsıra yolunu,

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

Şimdi publicklasörü şu şekilde kullanıyorsunuz:base_url()."public/[YOUR ASSET FOLDER]"

Bu yardımcı olur umarım :)


Yukarıdaki kodu test ettiniz mi, son satırda bir hata olduğunu düşünüyorum, /publicneden tüm istekleri yönlendiriyorsunuz base_url ()."public/[...? Sadece olmalı base_url ()."/[YOUR ASSET FOLDER]".
Kerkouch

12

Genellikle böyle tüm dosyalarımı uygulama kökündeki bir "varlıklar" klasörüne koydum ve sonra bu dosyaları benim için işaret etmek için bir Asset_Helper kullandığınızdan emin olun . CodeIgniter'ın önerdiği budur.


7

Hiç kimse .htacces'i değiştirmeniz ve dizini yeniden yazma koşulunda eklemeniz gerektiğini söylemez. Kök dizinde "system", "application", "index.php" ile birlikte "public" dizinini oluşturdum. ve .htaccess dosyasını şu şekilde düzenledi:

RewriteCond $1 !^(index\.php|public|robots\.txt)

Şimdi sadece aramak zorunda <?php echo base_url()."/public/yourdirectory/yuorfile";?> "public" dir içine istediğiniz gibi alt dizin ekleyebilirsiniz.


Bazilyon yıl geç kaldım, ancak kimse bunu okuyorsa, bu cevap benim ilk çözümümdü, ancak sanal ana bilgisayarlar aracılığıyla erişimi yönetiyorsanız, sanal ana bilgisayarı ortak klasöre yönlendirmek ve tutmak için daha iyi bir fikir olduğunu düşünüyorum. .htaccess yapılandırması. Yine de oy ver çünkü bu cevap beni çözüme yönlendiriyor
Vertig0

5

CSS dosyasını nereye koyacağınıza bakılmaksızın, link_tag () adlı CodeIgniter "html" yardımcısını kullanabilirsiniz. Bu yardımcıya şöyle bir şey uygularsınız:

echo link_tag('folder/subfolder/stylesheet.css');

CSS dosyasını en uygun yerde (size göre) bulmak size kalmıştır. "Html" yardımcısını otomatik olarak yüklemeniz veya kullanmak için ayrı olarak yüklemeniz gerekir.

İnsanlar bunu başarmak için base_url () kullanımını öneriyoruz ama aslında bunu yapmak için gerçekten "CodeIgniter" yolu değil (Ben bu sorunun birkaç kopyaları olduğunu düşünüyorum). Bu işe yarayacaktır, ancak bir çerçeve kullanmanın nedenlerinden biri, içinde önceden yapılmış işlevleri kullanmaktır.

Codeigniter'de bu tür şeyleri yapmak için birçok yardımcı var.


4

bir klasöre herhangi bir isim ekleyin, örneğin herkese açık ve .htaccess dosyası ekleyin ve her şeyden izin verin , bu klasörde tüm dosyalarınız ve tüm klasörleriniz hata vermeyecektir Erişim yasak! böyle kullan

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

4

CodeIgniter 3.1.0'ın en son sürümünü kullanıyorum. Klasör yapısı:

  • sistem
  • uygulama
  • Kullanici rehberi
  • varlıklar
    • Görüntüler
    • js
    • css

Burada görüntüler, css ve js dosyalarını varlıklar klasörünün içine koymalısınız.


3

Aşağıdaki klasör yapısını kullanıyorum:

application 
system 
static
    admin
        js
        css
        images
    public
        js
        css
        images
    uploads
        original
        thumbs

2

(Ben Codeigniter için yeniyim, bu yüzden bunun en iyi tavsiye olup olmadığını bilmiyorum)

Herkese açık dosyaları ortak klasörümde saklıyorum. Orada olmaları mantıklı ve ben kullanmam gerekmeyen bir şey için Codeigniter kullanmak istemiyorum.

Dizin ağacı şöyle görünür:

  • /uygulama/
  • /halka açık/
  • / Kamu / css /
  • / Kamu / img /
  • / Kamu / js /
  • / Sistem /

/ Public / dizininde tuttuğum tek dosyalar Codeigniter's index.php ve .htaccess dosyam:

RewriteEngine On
RewriteBase /

RewriteRule ^css/ - [L]
RewriteRule ^img/ - [L]
RewriteRule ^js/ - [L]

RewriteRule ^index.php(.*)$ - [L]
RewriteRule ^(.*)$ /index.php?/$1 [L]

2

css klasörünü projenizin dizinindeki assest klasörünün içine koyabilirsiniz (herhangi bir ad verebilirsiniz):

- ci_app
- application 
- views      
- assets 
  - css 
    - style.css 

... bu dosyayı bir sayfaya yüklemek istediğinizde, base_url () işlevini şu şekilde kullanabilirsiniz: <head> <link rel='stylesheet' href='<?php echo base_url();?>assets/css/style.css'> </head> ve projenizin base_url dosyasını config.php dosyasına şu şekilde ekleyeceğinizden emin olabilirsiniz:

$config['base_url'] = 'http://localhost/ci_app';

0

Merhaba bizim yapımız Uygulama, sistem, kullanıcı_guide gibidir

tüm klasörlerin hemen yanında bir klasör adı varlıkları oluşturun ve sonra bu varlıklar klasörünün içinde css ve javascript ve resim klasörü oluşturun tüm css js klasörlerinizi yerleştirin

Şimdi header.php adresine gidin ve css'i böyle çağırın.

<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"> 

-2

link_tag()Yardımcı açıkça bunu yapmak için bir yoldur. Css'nizi genellikle ait olduğu yere site_kökü / css / dizinine koyun ve yardımcıyı kullanın:

Gönderen CodeIgniter'ın docs ...

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

Çıktı

<link href="http://example.com/css/mystyles.css" rel="stylesheet" type="text/css" />
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.