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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top