2008-10-07 18 views
17

Ich beginne gerade mit CodeIgniter, und ich bin nicht sicher, wo Dinge wie css, js und Bilder gehen sollten. Draußen scheint der ganze Systemordner in Ordnung zu sein, aber das bedeutet, dass alles separat ist. Inside bedeutet, dass die Dateipfade länger sind, und ich bin besorgt, dass es die Dinge durcheinander bringen könnte. Was ist die beste Vorgehensweise zu diesem Thema?Wohin sollen Assets in einem Code-Igniter-Projekt gehen?

Antwort

15

ich in der Regel separate Ordner auf der Stammebene setzen, so dass ich am Ende mit einer Verzeichnisstruktur wie folgt auf:

/system 
/css 
/js 
/img 

scheint für mich zu arbeiten - wenn Sie site_url(url) verwenden, ist es die URL aus der ist erzeugt root, so können Sie site_url('css/file.css') verwenden, um URLs zu Ihren Stylesheets usw. zu generieren.

+0

Ach, das macht Sinn. Ich wollte site_url verwenden können, also macht das Sinn. Danke! –

+0

Bedeutet das, dass Sie Ihren Systemordner in einem öffentlichen Verzeichnis behalten? –

+1

@Blowski Ja. Ich weiß, es ist keine Best Practice, aber ich denke nicht, dass es ein Problem ist, besonders wenn Sie .htaccess verwenden, um den Zugriff darauf zu sperren. –

1

Ich hasse so viele Verzeichnisse auf der Stammebene, also benutze ich/public und benutze htaccess um/scripts nach/public/scripts umzuschreiben und so weiter .

+0

Könnten Sie Ihren mod_rewrite veröffentlichen? – bswinnerton

1

Ich finde es am besten, die Assets auf der Root-Ebene zu halten. Sie können <?=base_url()?> verwenden, um das vollständige Stammverzeichnis der Site zu protokollieren. In der Konfigurationsdatei richten Sie den Stamm der Website ein. Diese Aussage spiegelt das wider.

Aus diesem Grund können Sie enthält wie folgt verwenden:

<link href="<?=base_url()?>/css/style.css" rel="stylesheet" type="text/css" /> 

überall in Ihrem Code, und es wird immer noch http://example.com/css/style.css bekommen.

1

base_url()/css/name.css

+0

base_url() enthält den folgenden Schrägstrich, so dass Sie möchten: base_url(). 'css/name.css'; –

+0

ok.ok.thanks .ich weiß, aber ich habe es vergessen –

1

Um die site_url (url) Helfer auf diese Weise zu verwenden, müssen Sie sich zunächst Apache mod_rewrite (oder gleichwertig) konfigurieren Sie die index.php Segment aus der URI zu entfernen .

Andernfalls fügt die Methode site_url index.php der URL hinzu, die wahrscheinlich die Pfade zu Ihren Assets verfälscht, wenn Sie sie wie oben im Basisverzeichnis haben.

Hier ist die CodeIgniter Dokumentation auf index.php aus der URI zu entfernen:

http://codeigniter.com/wiki/mod_rewrite/

6

Ich persönlich rippen das application Verzeichnis aus dem system Verzeichnis und ein Geschwisterchen zu system machen. Ich erstelle dann ein Projektverzeichnis in public_html (www) wo ich index.php verschiebe und meine öffentlichen Assets ablege.

Nehmen wir an, das Projekt, an dem Sie gerade arbeiten, heißt projekt. In dem übergeordneten Verzeichnis zu public_html (www) ein Verzeichnis CISYSTEM, und in diesem Verzeichnis erstellen Sie ein Verzeichnis von der Version, die Sie verwenden, 202, 210 usw.

/CISYSTEM 
    /202 
    /210 
    /another_CI_version 
/projekt_application 
    /models 
    /views 
    /controllers 
    /private_assets 
/public_html 
    /projekt 
     index.php 
     .htaccess 
     css 
     img 
     js 
     lib 

Die Schönheit dieser Verzeichnisstruktur wird es fügt eine weitere Schicht genannt erstellen der Sicherheit und macht es tot-einfach zu aktualisieren/tauschen Sie Ihre CI-Kern. Außerdem sollten Sie keine Änderungen am Kern vornehmen - da Sie ein einziges Verzeichnis haben, in dem Ihr Kern gespeichert ist, und wenn alle Projekte darauf verweisen, bleiben die Daten DRY.

All diese Verzeichnis-Shuffling erfordert jedoch, dass Sie einige Dinge umleiten. Glücklicherweise macht CodeIgniter es einfach - alle Änderungen können in der index.php Datei vorgenommen werden.

öffnen index.php und Umleiten von ein paar Dinge:

Wechsel: $system_path = 'system';

An: $system_path = '../../CISYSTEM/210';

Wechsel: $application_folder = 'application';

An: $application_folder = '../../projekt_application';


Auch ich sehe eine Menge Leute über die Verwendung site_url() in den anderen Antworten sprechen. Ich empfehle eine weniger ausführliche Art und Weise site_url() verwenden ... Sie müssen es nicht nennen, jedes Mal, wenn Sie die Verwendung von HTML-Code des <base> Element machen:

<base href="<?= site_url();?>">

nur gehört, dass in Ihrer Anwendung <head> und Sie können rufen Sie Ihren Controller direkt ... wie in:

<a href='controllername/functionname'>Some Action</a>

Prost

Verwandte Themen