2012-01-13 14 views
6

Buongiorno, sto imparando CodeIgniter con Smarty. Il mio file CSS è memorizzato inCodeIgniter + CSS

/App01/application/views/css/main.css 

Per collegare il mio CSS che uso:

<link rel="stylesheet" type="text/css" href="http://localhost:88/APP1/application/views/css/layout.css" media="screen" /> 

Ma CSS non è applicato sulla mia pagina. Quando apro l'URL CSS, ricevo un messaggio:

Forbidden 
You don't have permission to access /APP1/application/views/css/layout.css on this server. 

Per favore, cosa sto sbagliando? Mi piacerebbe mantenere il mio CSS insieme alla vista perché in futuro mi piacerebbe imparare come creare più temi e io il CSS dovrebbe essere tenuto all'interno della cartella dei temi.

Posso sostituire il percorso URL del file CSS con alcune variabili Smarty in modo che quando sposto la mia applicazione non sia necessario modificare manualmente il percorso URL CSS nei modelli?

Grazie in anticipo! Vojtech

+3

+1 per iniziare una discussione con Good Day. – SpaceBeers

risposta

12

Qualsiasi cosa nella cartella /application di CodeIgniter deve essere considerato fuori limite. Per la massima sicurezza, si dovrebbe effettivamente prendere in considerazione mantenere /application sopra la cartella www o public_html in una struttura come questa:

– application 
    – controllers 
    – models 
    – views 
    – ... 
– system 
    – core 
    – libraries 
    – ... 
– public_html 
    – index.php 

Questo rende il vostro codice di applicazione più sicura.

Suggerirei di creare script e CSS sul lato client in una cartella pubblica. Ad esempio public_html/css e public_html/js. Oppure, se si desidera andare lungo il percorso del tema, possibilmente denominare ogni file CSS come nome del tema, in modo da avere css/theme1.css e css/theme2.css.

Se il sito funzionerà sempre dalla radice di un dominio, allora si può solo utilizzare:

<link rel="stylesheet" type="text/css" href="/css/layout.css" media="screen" /> 

Ma se si sente che si sta andando ad essere in movimento ogni sorta di cose in giro, quindi prendere in considerazione preparare la posizione del file nel controller prima di inviarlo a Smarty.

$this->load->helper('url'); 
$this->smarty->assign('css_file', base_url("css/theme1.css")); 

che restituirà:

http://localhost/app1/css/theme.css 

O qualunque sia il vostro URL CodeIgniter è.

+0

Molte grazie per il tuo consiglio Thomas, mi ha aiutato molto a capire! – Vojtech

+0

Prego. –

0

Provare ad aggiungere un collegamento simbolico alla cartella radice dei documenti del server. (Www/public_html/htdocs)

cd (document root folder) 
ln -s (/App01/application/views/css) . 

questo modo è possibile accedere alla propria cartella css e mantenere l'attuale struttura.

1

Ciò contribuirà a collegare css a codeigniter.

Il link_tag viene utilizzato per collegare le risorse ed è possibile utilizzare la funzione helper. Ad esempio helper html, helper URL, helper email, ecc.

nel controller è necessario creare una funzione di qualcosa di simile

<?php 
class Home extends CI_Controller{ 
    public function helper(){ 
     $this->load->helper('html');  
     $this->load->view('index'); 
    } 
} 
?> 

E il tuo index.php in view cartella uso link_tag parola chiave.

<html> 
<head> 
<title></title> 
<?php echo link_tag('App01/application/views/css/main.css');?> 
</head> 
<body> 
    <?php 
    ....... 
    ?> 
</body> 
</html>