Odpowiedzi:
Mam taką konfigurację:
Mam wtedy funkcję pomocniczą, która po prostu zwraca pełną ścieżkę do tego w zależności od mojej konfiguracji, coś podobnego do:
application / helpers / utility_helper.php:
function asset_url(){
return base_url().'assets/';
}
Zwykle trzymam typowe procedury podobne do tego w tym samym pliku i ładuję go automatycznie z konfiguracją automatycznego ładowania codeignitera.
Uwaga: pomocnik adresu URL automatycznego ładowania w celu
base_url()
uzyskania dostępu.
application / config / autoload.php:
$autoload['helper'] = array('url','utility');
Będziesz mieć wtedy dostęp do asset_url()
całego kodu.
$autoload['helper'] = array('url', 'utility');
Nie, wewnątrz folderu widoków nie jest dobrze.
Spójrz: musisz mieć 3 podstawowe foldery w swoim projekcie:
system // To jest framework CI, nie ma zbyt wielu powodów, aby dotykać tych plików
aplikacja // tutaj kieruje się Twoja logika, pliki, które tworzą aplikację ,
public // to musi być twój katalog główny
Ze względów bezpieczeństwa lepiej jest trzymać framework i aplikację poza katalogiem (public_html, htdocs, public, www ... itd.)
W swoim folderze publicznym powinieneś umieścić swoje publiczne informacje, to, co widzą przeglądarki, typowe dla znalezienia folderów: images, js, css; więc twoja struktura będzie:
|- system/
|- application/
|---- models/
|---- views/
|---- controllers/
|- public/
|---- images/
|---- js/
|---- css/
|---- index.php
|---- .htaccess
public
Czy jest jakiś problem z dodaniem folderu o tej samej nazwie?
.htaccess
usuwanie /index.php?
i wywoływanie folderu publicznegobase_url().'public/yourfolder';
Tak postępuję z majątkiem publicznym. Tutaj używam metody Bootstrap Phalcon PHP .
|-.htaccess*
|-application/
|-public/
|-.htaccess**
|-index.php***
|-css/
|-js/
|-img/
|-font/
|-upload/
|-system
.htaccess*
Wszystkie żądania kierowane do projektu zostaną przepisane do katalogu public /, dzięki czemu będzie to katalog główny dokumentu. Ten krok zapewnia, że wewnętrzne foldery projektów pozostają ukryte przed publicznym przeglądaniem, a tym samym eliminuje tego rodzaju zagrożenia bezpieczeństwa. - Phalconphp Doc
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
.htaccess**
Reguły sprawdzą, czy żądany plik istnieje, a jeśli tak, to nie musi być przepisywany przez moduł serwera WWW. - Phalconphp Doc
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
</IfModule>
index.php***
Zmodyfikuj application
ścieżkę i system
ścieżkę jako,
$system_path = '../system';
$application_folder = '../application';
Teraz używasz public
folderu jakobase_url()."public/[YOUR ASSET FOLDER]"
Mam nadzieję że to pomoże :)
/public
więc dlaczego base_url ()."public/[...
! Powinno być sprawiedliwe base_url ()."/[YOUR ASSET FOLDER]"
.
Zwykle umieszczam wszystkie moje pliki w folderze „ asset ” w katalogu głównym aplikacji, a następnie upewniam się, że używam Asset_Helper, aby wskazać te pliki za mnie. To właśnie sugeruje CodeIgniter.
Nikt nie mówi, że musisz zmodyfikować .htacces i dodać katalog w warunku przepisywania. Utworzyłem katalog „public” w katalogu głównym obok „system”, „aplikacja”, „index.php”. i edytować plik .htaccess w ten sposób:
RewriteCond $1 !^(index\.php|public|robots\.txt)
Teraz musisz po prostu zadzwonić. <?php echo base_url()."/public/yourdirectory/yuorfile";?>
Możesz dodać podkatalog do katalogu „public”, jak chcesz.
Niezależnie od tego, gdzie umieścisz plik CSS, możesz po prostu użyć helpera CodeIgniter "html" o nazwie link_tag (). Zastosowałbyś tego pomocnika mniej więcej tak:
echo link_tag('folder/subfolder/stylesheet.css');
To do Ciebie należy zlokalizowanie pliku CSS w najbardziej odpowiednim miejscu (Twoim zdaniem). Trzeba by było albo automatycznie załadować helpera "html", albo osobno załadować go, żeby z niego korzystać.
Ludzie ciągle sugerują użycie metody base_url (), aby to osiągnąć, ale tak naprawdę nie jest to sposób, w jaki można to zrobić w "CodeIgniter" (myślę, że to pytanie ma kilka duplikatów). To zadziała, ale jednym z powodów korzystania z frameworka jest użycie gotowych funkcji w nim.
W Codeigniter jest wielu pomocników, którzy mogą robić tego typu rzeczy.
dodaj do jednego folderu dowolną nazwę np. publiczny i dodaj plik .htaccess i zapisz zezwalaj na wszystko to znaczy, w tym folderze wszystkie twoje pliki i wszystkie foldery nie będą dawać błędu Dostęp zabroniony! użyj tego w ten sposób
<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>
Używam najnowszej wersji CodeIgniter 3.1.0. Jego struktura folderów jest następująca:
Tam należy umieścić obrazy, pliki css i js w folderze zasobów.
(Jestem nowy w Codeigniter, więc nie wiem, czy to najlepsza rada)
Pliki dostępne publicznie przechowuję w moim folderze publicznym. To logiczne, że tam są i nie chcę używać Codeignitera do czegoś, do czego nie muszę go używać.
Drzewo katalogów wygląda następująco:
Jedyne pliki, które trzymam w / public /, to index.php Codeigniter i mój plik .htaccess:
RewriteEngine On
RewriteBase /
RewriteRule ^css/ - [L]
RewriteRule ^img/ - [L]
RewriteRule ^js/ - [L]
RewriteRule ^index.php(.*)$ - [L]
RewriteRule ^(.*)$ /index.php?/$1 [L]
możesz umieścić folder css w folderze assest (możesz go nazwać dowolną nazwą) w katalogu swojego projektu jako:
- ci_app
- application
- views
- assets
- css
- style.css
... kiedy chcesz załadować ten plik na stronę, możesz użyć funkcji base_url () w następujący sposób:
<head>
<link rel='stylesheet' href='<?php echo base_url();?>assets/css/style.css'>
</head>
i na pewno dodasz base_url swojego projektu w pliku config.php w następujący sposób:
$config['base_url'] = 'http://localhost/ci_app';
Cześć, nasza konstrukcja jest podobna do aplikacji, systemu, przewodnika użytkownika
utwórz nazwę folderu zasoby tuż obok wszystkich folderów, a następnie w tym folderze zasobów utwórz folder css i javascript oraz obrazy umieść wszystkie pliki css js w folderach
teraz przejdź do header.php i wywołaj css w ten sposób.
<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">
link_tag()
Pomocnik jest wyraźnie sposób to zrobić. Umieść swój css w miejscu, w którym zwykle należy, w site_root / css /, a następnie użyj helpera:
Z dokumentacji The CodeIgniter ...
echo link_tag('css/mystyles.css');
Wynik
<link href="http://example.com/css/mystyles.css" rel="stylesheet" type="text/css" />