Dove posso inserire file di immagine, CSS, JS, ecc. In Codeigniter?


144

Dove è accettabile mettere cartelle css e cartelle di file immagine? Stavo pensando all'interno della cartella di visualizzazione? Tuttavia, il controller reindirizza sempre il percorso all'URL di base, quindi devo specificare il percorso nel file .html in cui si trova, che è ridondante.

Risposte:


202

Ho un setup come questo:

  • applicazione
  • sistema
  • risorse
    • js
    • imgs
    • css

Ho quindi una funzione di supporto che restituisce semplicemente il percorso completo a questo a seconda della mia configurazione, qualcosa di simile a:

application / aiutanti / utility_helper.php:

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

Di solito manterrò routine comuni simili a questa nello stesso file e lo caricherò automaticamente con la configurazione di caricamento automatico di codeigniter.

Nota: helper URL di caricamento automatico per l' base_url()accesso.

application / config / autoload.php:

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

Avrai quindi accesso a asset_url()tutto il codice.


1
ciao eddie, mi chiedo dove metti il ​​tuo codice funzione .. dovrei metterlo in file_helper.php?
kebyang

3
Ciao @KebyangBlabla Ho aggiornato la mia risposta con un po 'più di informazioni che potrebbero aiutarti.
Eddie,

10
Per accedere a 'baseurl ()' dovrai anche includere l'helper 'url', in questo modo:$autoload['helper'] = array('url', 'utility');
Jeffrey

Un modo migliore potrebbe essere avere una cartella delle risorse nella cartella radice Web (la mia è public_html) e quindi CI in una directory sopra la radice Web.
Nate Nolting,

3
Nel caso in cui altri siano come me, per chiarire, accedete in questo modo <? = Asset_url ();?> Css / css.css
JonYork,

50

No, all'interno della cartella delle visualizzazioni non va bene.

Aspetto: è necessario disporre di 3 cartelle di base sul progetto:

system // Questo è un framework CI, non ci sono molti motivi per toccare questi file

applicazione // questo è dove va la tua logica, i file che compongono l'applicazione ,

public // questo deve essere il tuo documentroot

Per motivi di sicurezza è meglio mantenere il framework e l'applicazione al di fuori del documentroot (public_html, htdocs, public, www ... ecc.)

All'interno della tua cartella pubblica, dovresti inserire le tue informazioni pubbliche, ciò che i browser possono vedere, è comune trovare le cartelle: immagini, js, css; quindi la tua struttura sarà:

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

1
che cos'è index.php nella cartella pubblica? è quel file 404? grazie
DeLe

Ci scusiamo per il ritardo, ma per lo: T Il file index.php sarà il file che intercetterà la richiesta e chiamerà il resto del framework.
Juan Jo,

@Juan Jo .. Sto usando CodeIgniter-3.0.6. Non riesco a trovare alcuna cartella denominata. publicC'è qualche problema ad aggiungere una cartella con lo stesso nome.
Akhil Vijay,

@AkhilVijay non lo troverai nella cartella del codeigniter, la cartella lo sarà quando lo distribuirai su qualsiasi server
Anwar Hossain,

il modo migliore per lavorare con codeigniter consiste nel .htaccessrimuovere /index.php?e chiamare la cartella pubblica conbase_url().'public/yourfolder';
Robert Blasco Villarroya,

16

Ecco come gestisco i beni pubblici. Qui uso il metodo Bootstrap di Phalcon PHP .

Struttura delle cartelle

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

File da modificare

  1. .htaccess*

    Tutte le richieste al progetto verranno riscritte nella directory pubblica / rendendola la radice del documento. Questo passaggio garantisce che le cartelle di progetto interne rimangano nascoste alla visualizzazione pubblica e quindi elimina minacce di sicurezza di questo tipo. - Phalconphp Doc

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

    Le regole controlleranno se il file richiesto esiste e, in caso affermativo, non deve essere riscritto dal modulo del 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***

    Modifica il applicationpercorso e il systempercorso come,

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

Ora usi la publiccartella comebase_url()."public/[YOUR ASSET FOLDER]"

Spero che questo ti aiuti :)


Hai testato il codice sopra, penso che ci sia un errore sull'ultima riga, hai reindirizzato tutte le richieste per /publicquesto perché base_url ()."public/[...! Dovrebbe essere giusto base_url ()."/[YOUR ASSET FOLDER]".
Kerkouch,

12

Di solito inserisco tutti i miei file in una cartella "asset" nella radice dell'applicazione e quindi mi assicuro di utilizzare un Asset_Helper per scegliere quei file per me. Questo è ciò che suggerisce CodeIgniter.


7

Nessuno dice che è necessario modificare .htacces e aggiungere la directory nella condizione di riscrittura. Ho creato una directory "pubblica" nella directory principale insieme a "system", "application", "index.php". e modificato il file .htaccess in questo modo:

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

Ora devi solo chiamare <?php echo base_url()."/public/yourdirectory/yuorfile";?> Puoi aggiungere la sottodirectory all'interno della directory "pubblica" come preferisci.


Sono in ritardo di miliardi di anni, ma se qualcuno sta leggendo questo, questa risposta era la mia soluzione iniziale, ma se stai gestendo l'accesso tramite host virtuali, penso che sia un'idea migliore per indirizzare l'host virtuale alla cartella pubblica e mantenere la configurazione .htaccess. Votazione comunque perché questa risposta mi indica la soluzione
Vertig0

5

Indipendentemente da dove metti il ​​file CSS, puoi semplicemente usare l'helper CodeIgniter "html" chiamato link_tag (). Applicheresti questo aiuto in questo modo:

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

Sta a te individuare il file CSS nel posto più appropriato (secondo te). Dovresti caricare automaticamente l'helper "html" o caricarlo separatamente per usarlo.

Le persone continuano a suggerire l'utilizzo di base_url () per raggiungere questo obiettivo, ma in realtà non è proprio il modo "CodeIgniter" di farlo (penso che questa domanda abbia alcuni duplicati). Funzionerà ma uno dei motivi per usare un framework è usare le funzioni pre-create al suo interno.

Ci sono molti aiutanti in Codeigniter per fare questo tipo di cose.


4

aggiungi una cartella qualsiasi nome es. pubblico e aggiungi il file .htaccess e scrivi consenti da tutto ciò che significa, in questa cartella tutti i tuoi file e tutte le cartelle non daranno errore Accesso vietato! usalo in questo modo

<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

Sto usando l'ultima versione di CodeIgniter 3.1.0. La struttura delle cartelle è:

  • sistema
  • applicazione
  • guida utente
  • risorse
    • immagini
    • js
    • css

È qui che dovresti inserire le immagini, i file css e js nella cartella delle risorse.


3

Uso la seguente struttura di cartelle:

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

2

(Sono nuovo di Codeigniter, quindi non so se questo è il miglior consiglio)

Tengo i file disponibili pubblicamente nella mia cartella pubblica. È logico che siano lì, e non voglio usare Codeigniter per qualcosa per cui non ho bisogno di usarlo.

L'albero delle directory è simile al seguente:

  • /applicazione/
  • /pubblico/
  • / Public / css /
  • / Public / img /
  • / Public / js /
  • /sistema/

Gli unici file che tengo in / public / sono index.php di Codeigniter e il mio file .htaccess:

RewriteEngine On
RewriteBase /

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

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

2

puoi mettere la cartella css nella cartella assest (nominala con un nome qualsiasi) nella directory del tuo progetto come:

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

... quando vuoi caricare quel file in una pagina, puoi usare la funzione base_url () in questo modo: <head> <link rel='stylesheet' href='<?php echo base_url();?>assets/css/style.css'> </head> e sei sicuro di aggiungere base_url del tuo progetto nel file config.php come questo:

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

0

Salve, la nostra struttura è come Application, system, user_guide

crea una cartella nome risorse proprio vicino a tutte le cartelle e poi all'interno di questa cartella risorse crea css e javascript e cartella immagini metti tutti i tuoi css js all'interno delle cartelle

ora vai su header.php e chiama il css in questo modo.

<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

L' link_tag()aiutante è chiaramente il modo per farlo. Metti il ​​tuo css dove di solito appartiene, in site_root / css / e poi usa l'helper:

Dai documenti di CodeIgniter ...

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

Produzione

<link href="http://example.com/css/mystyles.css" rel="stylesheet" type="text/css" />
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.