CodeIgniter + CSS
-
27-10-2019 - |
Domanda
Buon giorno, sto imparando CodeIgniter con Smarty. Il mio file CSS è archiviato in
/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 viene applicato sulla mia pagina. Quando apro 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 facendo di sbagliato? Vorrei tenere il mio CSS insieme alla vista perché in futuro vorrei imparare a creare più temi e i cose che il CSS dovrebbe essere tenuto all'interno della cartella del tema.
Posso sostituire il percorso URL al file CSS con una variabile intelligente in modo che quando sposta la mia applicazione non ho bisogno di modificare manualmente il percorso URL CSS nei modelli?
Grazie in anticipo! Vojtech
Soluzione
Qualsiasi cosa nel /application
La cartella del codeigniter deve essere considerata fuori confine. Per la migliore sicurezza, dovresti effettivamente considerare di mantenere /application
sopra il tuo www
o public_html
cartella in una struttura come questa:
– application
– controllers
– models
– views
– ...
– system
– core
– libraries
– ...
– public_html
– index.php
Questo rende il codice dell'applicazione più sicuro.
Consiglierei di creare script sul lato client e CSS in una cartella pubblica. Per esempio public_html/css
e public_html/js
. Oppure, se volevi seguire il percorso del tema, eventualmente nominare ogni file CSS come il nome del tema, quindi avresti css/theme1.css
e css/theme2.css
.
Se il tuo sito funzionerà sempre dalla radice di un dominio, puoi semplicemente usare:
<link rel="stylesheet" type="text/css" href="/css/layout.css" media="screen" />
Ma se ritieni che tu spostarai ogni sorta di cose, allora prendi in considerazione la preparazione della 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 tornerà:
http://localhost/app1/css/theme.css
O qualunque sia il tuo URL di codeigniter.
Altri suggerimenti
Ciò contribuirà a collegare CSS a CodeIgniter.
Il link_tag
viene utilizzato per collegare le risorse e puoi utilizzare helper
funzione. Ad esempio HTML Helper, URL Helper, Email Helper, ecc.
Nel tuo controller devi creare una funzione 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 Utilizzare la parola chiave Link_tag.
<html>
<head>
<title></title>
<?php echo link_tag('App01/application/views/css/main.css');?>
</head>
<body>
<?php
.......
?>
</body>
</html>
Prova ad aggiungere un collegamento simbolico alla cartella root del documento dei server. (www/public_html/htdocs)
cd (document root folder)
ln -s (/App01/application/views/css) .
In questo modo puoi accedere alla cartella CSS e mantenere la struttura corrente.