Antworten:
Ich habe ein Setup wie dieses:
Ich habe dann eine Hilfsfunktion, die abhängig von meinem Setup einfach den vollständigen Pfad dazu zurückgibt, ähnlich wie:
application / helpers / Utility_helper.php:
function asset_url(){
return base_url().'assets/';
}
Normalerweise behalte ich ähnliche Routinen in derselben Datei und lade sie automatisch mit der Autoload-Konfiguration des Codeigniters.
Hinweis: URL-Helfer zum automatischen Laden für den
base_url()
Zugriff.
application / config / autoload.php:
$autoload['helper'] = array('url','utility');
Sie haben dann Zugriff auf asset_url()
Ihren gesamten Code.
$autoload['helper'] = array('url', 'utility');
Nein, im Ansichtsordner ist nicht gut.
Schauen Sie: Sie müssen 3 grundlegende Ordner in Ihrem Projekt haben:
System // Dies ist ein CI-Framework. Es gibt nicht viele Gründe, diese Dateien zu berühren
Anwendung // Hier geht Ihre Logik hin, die Dateien, aus denen die Anwendung besteht.
public // Dies muss Ihre Dokumentenwurzel sein
Aus Sicherheitsgründen ist es besser, Ihr Framework und die Anwendung außerhalb Ihrer Dokumentwurzel zu halten (public_html, htdocs, public, www ... etc).
In Ihrem öffentlichen Ordner sollten Sie Ihre öffentlichen Informationen ablegen, was die Browser sehen können. Es ist üblich, die Ordner zu finden: images, js, css; Ihre Struktur wird also sein:
|- system/
|- application/
|---- models/
|---- views/
|---- controllers/
|- public/
|---- images/
|---- js/
|---- css/
|---- index.php
|---- .htaccess
public
Gibt es ein Problem beim Hinzufügen eines Ordners mit demselben Namen?
.htaccess
Entfernen /index.php?
und Aufrufen des öffentlichen Ordners mitbase_url().'public/yourfolder';
So gehe ich mit dem öffentlichen Vermögen um. Hier verwende ich die Bootstrap-Methode von Phalcon PHP .
|-.htaccess*
|-application/
|-public/
|-.htaccess**
|-index.php***
|-css/
|-js/
|-img/
|-font/
|-upload/
|-system
.htaccess*
Alle Anforderungen an das Projekt werden in das Verzeichnis public / geschrieben, wodurch es zum Dokumentenstamm wird. Dieser Schritt stellt sicher, dass die internen Projektordner nicht öffentlich angezeigt werden können, und beseitigt somit Sicherheitsbedrohungen dieser Art. - Phalconphp Doc
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
.htaccess**
Die Regeln prüfen, ob die angeforderte Datei vorhanden ist, und müssen in diesem Fall nicht vom Webservermodul neu geschrieben werden. - - 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***
Ändern Sie den application
Pfad und den system
Pfad als,
$system_path = '../system';
$application_folder = '../application';
Jetzt verwenden Sie den public
Ordner alsbase_url()."public/[YOUR ASSET FOLDER]"
Hoffe das hilft :)
/public
das Warum weiter base_url ()."public/[...
. Es sollte gerecht sein base_url ()."/[YOUR ASSET FOLDER]"
.
Normalerweise lege ich alle meine Dateien so in einen "Assets" -Ordner im Anwendungsstamm und stelle dann sicher, dass ich einen Asset_Helper verwende , um auf diese Dateien für mich zu verweisen. Dies schlägt CodeIgniter vor.
Niemand sagt, dass Sie die .htacces ändern und das Verzeichnis in der Umschreibungsbedingung hinzufügen müssen. Ich habe ein Verzeichnis "public" im Stammverzeichnis zusammen mit "system", "application", "index.php" erstellt. und bearbeitete die .htaccess-Datei wie folgt:
RewriteCond $1 !^(index\.php|public|robots\.txt)
Jetzt müssen Sie nur noch aufrufen. <?php echo base_url()."/public/yourdirectory/yuorfile";?>
Sie können das Unterverzeichnis im Verzeichnis "public" hinzufügen, wie Sie möchten.
Unabhängig davon, wo Sie die CSS-Datei ablegen, können Sie einfach den CodeIgniter "html" -Helfer namens link_tag () verwenden. Sie würden diesen Helfer ungefähr so anwenden:
echo link_tag('folder/subfolder/stylesheet.css');
Es liegt an Ihnen, die CSS-Datei an der am besten geeigneten Stelle zu finden (Ihrer Meinung nach). Sie müssten entweder den "HTML" -Helfer automatisch laden oder separat laden, um ihn zu verwenden.
Die Leute schlagen immer wieder die Verwendung von base_url () vor, um dies zu erreichen, aber es ist eigentlich nicht die "CodeIgniter" -Methode (ich denke, diese Frage hat ein paar Duplikate). Das wird funktionieren, aber einer der Gründe für die Verwendung eines Frameworks ist die Verwendung der darin enthaltenen vorgefertigten Funktionen.
Es gibt viele Helfer im Codeigniter, die so etwas tun.
Fügen Sie einen Ordner mit einem beliebigen Namen hinzu, z. B. public, und fügen Sie die .htaccess- Datei hinzu, und schreiben Sie, was alles bedeutet. In diesem Ordner geben alle Dateien und alle Ordner keinen Fehler. Zugriff verboten! benutze es so
<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>
Ich verwende die neueste Version von CodeIgniter 3.1.0. Die Ordnerstruktur ist:
Dort sollten Sie die Bilder-, CSS- und JS-Dateien im Assets-Ordner ablegen.
(Ich bin neu bei Codeigniter, daher weiß ich nicht, ob dies der beste Rat ist.)
Ich behalte öffentlich verfügbare Dateien in meinem öffentlichen Ordner. Es ist logisch, dass sie dort sind, und ich möchte Codeigniter nicht für etwas verwenden, für das ich es nicht verwenden muss.
Der Verzeichnisbaum sieht folgendermaßen aus:
Die einzigen Dateien, die ich in / public / aufbewahre, sind die index.php von Codeigniter und meine .htaccess-Datei:
RewriteEngine On
RewriteBase /
RewriteRule ^css/ - [L]
RewriteRule ^img/ - [L]
RewriteRule ^js/ - [L]
RewriteRule ^index.php(.*)$ - [L]
RewriteRule ^(.*)$ /index.php?/$1 [L]
Sie können den CSS-Ordner im Assest-Ordner (Sie nennen ihn einen beliebigen Namen) im Verzeichnis Ihres Projekts wie folgt ablegen:
- ci_app
- application
- views
- assets
- css
- style.css
... wenn Sie diese Datei auf einer Seite laden möchten, können Sie die Funktion base_url () folgendermaßen verwenden:
<head>
<link rel='stylesheet' href='<?php echo base_url();?>assets/css/style.css'>
</head>
und Sie müssen base_url Ihres Projekts wie folgt in die Datei config.php einfügen:
$config['base_url'] = 'http://localhost/ci_app';
Hallo, unsere Struktur ist wie Anwendung, System, Benutzerhandbuch
Erstellen Sie einen Ordnernamen mit Assets in der Nähe aller Ordner und legen Sie dann in diesem Assets-Ordner CSS- und Javascript- und Bilderordner ab. Legen Sie alle Ihre CSS-Js in die Ordner
Gehen Sie jetzt zu header.php und rufen Sie das CSS einfach so auf.
<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">
Der link_tag()
Helfer ist eindeutig der Weg, dies zu tun. Platzieren Sie Ihr CSS dort, wo es normalerweise hingehört, in site_root / css / und verwenden Sie dann den Helfer:
Aus den CodeIgniter-Dokumenten ...
echo link_tag('css/mystyles.css');
Ausgabe
<link href="http://example.com/css/mystyles.css" rel="stylesheet" type="text/css" />