2009-10-09 13 views
7

Wo und wie schließe ich .js-Dateien in Ansichten in CodeIgniter ein?CodeIgniter: Wie schließe ich eine .js-Datei in Sicht?

Ich habe dies versucht:

<script type="text/javascript" src="system/application/libraries/jquery.js"></script> 

Als ich dachte, dass die index.php derjenige ist, der die Ansichten wird geladen, so vermute ich, dass jedes Mal, wenn eine Seite der Pfad aktuellen Verzeichnis geladen ist im root, da index.php im root liegt. Ist das wahr?

Die obige Zeile nicht, damit ich etwas falsch mache. Ich habe ein CodeIgniter-Projekt. Der Weg ist wie folgt aus:

localhost/CodeIgniter/system/application 

so, welchen Weg soll ich verwenden, um meine jquery.js Datei enthalten, die in

localhost/CodeIgniter/system/application/libraries 

befindet, wenn ich die Datei jquery.js in einer Ansicht zu ladende befindet sich hier:

localhost/codeIgniter/system/application/views/till_view.php 

Antwort

6

Es ist nicht die „index.php“ Datei, die der Ansicht ist. Die Aussicht, was auch immer ist, wird in dem Controller geladen, wenn Sie eine

Die Datei „viewname.php“ kann

$this->load->view("viewname"); tun dann sind die Js Dateien, so wie ein normaler .html (oder .php) Datei würde:

<script src="/url/to/javascript.js" /> 

Sie können einen Standardansicht oder einen „Header“ Ansicht erstellen, die einige oder alle der (gemeinsam enthält) .js Dateien für Ihr Projekt.

-CF

+11

Sie müssen Ihren Namen nicht unterzeichnen, wenn Sie Ihren Avatar bereits für sich signieren lassen. – random

+0

Gibt es eine Möglichkeit, es vom Controller hinzuzufügen? Ich habe eine Legacy-Codeigniter-App, und es verwendet eine Header-Datei, die von einer Gruppe von internen, institutionellen Websites geteilt wird. Ich weiß, ich kann leicht sagen "" (einige Browser mögen die oben beschriebene selbstschließende Version nicht). Wie auch immer, es ist nicht w3c-konform, CSS irgendwo anders als in der Kopfzeile hinzuzufügen, und ich würde es vorziehen, auch meine JS in die Kopfzeile aufzunehmen. Mit web2py kann ich response.append(URL('static','file.css')) tun. Andere CI-Apps in unserer Institution Ich habe so etwas wie this->addJS("file.js"); gesehen Gibt es einen CI-Standard? – Kasapo

+0

[** script_tag() für CodeIgniter **] (https://github.com/JDMcKinstry/CIScriptTag) – SpYk3HH

6

Erste Frage:

Es hängt davon ab, ob Sie absoluten oder relativen URLs verwenden.

Absolute URLs gehen von der Wurzel Ihrer Domain. Relative URLs werden relativ vom aktuellen Verzeichnis (einschließlich der URL-Segmente) geladen.

Zweite Frage: Es ist am besten, eine absolute URL zu verwenden. Aufgrund der hübschen URLs wird nicht empfohlen, relative URLs zu verwenden.

Der einfachste Weg ist es, die url helper zu verwenden und dann die Website-URL-Funktion wie folgt verwenden:

$this->load->helper('url'); 
echo site_url('system/application/libraries/jquery.js'); 

Ps. Ich empfehle, Dinge wie Javascript und Bilder außerhalb des CodeIgniter-Verzeichnisses zu platzieren.

4

base_url() arbeitet immer gut für mich

14

Es ist eine weniger bekannte Lösung, die wirklich gut mit sauberen Syntax und viel mehr Portabilität als hart codierte URL oder Verwandten Dateien funktioniert.

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

<img src="images/logo.gif" alt="Logo" /> 

Lesen Sie mehr darüber, wie, was, warum auf meinem Artikel "Asset handling in CodeIgniter with the BASE tag".

+0

Danke. Das hat meine Welt wirklich verändert :) – unni

+0

Das hat für mich funktioniert, aber ich wünschte, dein Link funktioniert. –

-1

Der einfachste Weg, direkt auf die Datei zugreifen können:

<img src="http://localhost/ci/you_dir/your_img/your_image.png" /> 

wo ci für codeigniter ist.

0

Hier ist eine Lösung speziell relevant für die OP, die ich glaube nicht, dass jemand anderes zur Verfügung gestellt.

<script type="text/javascript" src="<?= base_url() ?>libraries/jquery.js"></script> 

So wird base_url() einen Pfad zur Wurzel Ihrer Website direkt zur Verfügung stellen.

Verwandte Themen