2012-01-13 17 views
6

Dzień dobry, uczę się CodeIgniter ze Smarty. Mój plik CSS są przechowywane wCodeIgniter + CSS

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

Aby połączyć mój CSS używać:

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

Ale CSS nie jest stosowana na mojej stronie. Po otwarciu adresu URL CSS otrzymuję komunikat:

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

Proszę, co ja robię źle? Chciałbym trzymać mój CSS razem z widokiem, ponieważ w przyszłości chciałbym nauczyć się tworzyć wiele motywów i uważam, że CSS powinien być przechowywany w folderze motywów.

Czy mogę zastąpić ścieżkę adresu URL do pliku CSS pewną zmienną Smarty, aby po przeniesieniu aplikacji nie trzeba zmieniać ścieżki adresu URL CSS w szablonach ręcznie?

Z góry dziękuję! Vojtech

+3

+1 za uruchomienie wątku z Good Day. – SpaceBeers

Odpowiedz

12

Cokolwiek w katalogu /application CodeIgniter należy uznać za wykraczające poza granice. Dla najlepszego bezpieczeństwa, należy właściwie rozważyć utrzymanie /application powyżej folderze www lub public_html w strukturze, takie jak ten:

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

To sprawia, że ​​kod aplikacji bezpieczniejsze.

Zaleca się tworzenie skryptów po stronie klienta i CSS w folderze publicznym. Na przykład public_html/css i public_html/js. Lub, jeśli chcesz pójść ścieżką motywu, ewentualnie nazwij każdy plik CSS jako nazwę motywu, aby uzyskać css/theme1.css i css/theme2.css.

Jeśli witryna będzie zawsze pracować z korzenia domeny, możesz po prostu użyć:

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

Ale jeśli czujesz, że masz zamiar się poruszać różne rzeczy wokół, a następnie rozważyć przygotowywanie lokalizacji pliku w kontrolerze przed wysłaniem go do Smarty.

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

Że wróci:

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

Albo niezależnie CodeIgniter URL.

+0

Bardzo dziękuję za poradę Thomas, bardzo mi to pomogło zrozumieć! – Vojtech

+0

Nie ma za co. –

0

Spróbuj dodać dowiązanie symboliczne do folderu głównego dokumentu serwera. (www/public_html/htdocs)

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

W ten sposób można uzyskać dostęp do folderu css i zachować obecną strukturę.

1

Pomoże to połączyć css do codeigniter.

Urządzenie link_tag służy do łączenia zasobów i można użyć funkcji helper. Na przykład helper html, pomocnik url, pomocnik poczty e-mail itp.

W kontrolerze trzeba utworzyć funkcję czegoś podobnego

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

i twój index.php w view folderu hasła użycie link_tag.

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