2009-10-09 12 views
7

Gdzie i jak mogę uwzględnić pliki .js w Widoki w CodeIgniter?CodeIgniter: W jaki sposób mogę uwzględnić plik .js?

Próbowałem to:

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

Jak pomyślałem, że index.php jest ten, który się ładuje poglądy, więc zgaduję, że za każdym razem gdy strona jest ładowana obecna ścieżka dir to w katalogu głównym, ponieważ index.php znajduje się w katalogu głównym. Czy to prawda?

Powyższa linia nie jest taka, że ​​robię coś nie tak. Mam projekt CodeIgniter. Ścieżka jest tak:

localhost/CodeIgniter/system/application 

więc jaką drogą należy użyć do obejmują mój plik jquery.js który znajduje się w

localhost/CodeIgniter/system/application/libraries 

gdy chcę załadować plik jquery.js w widoku znajduje się tutaj:

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

Odpowiedz

6

to nie jest „index.php” plik jest widok. Widok jest cokolwiek jest ładowany w kontrolerze kiedy wykonujesz

$this->load->view("viewname");

plik „viewname.php” może następnie obejmować js plików, tak jak normalny .html (lub .php plik ) będzie:

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

Możesz utworzyć widok domyślny lub „nagłówek” widok, który zawiera niektóre lub wszystkie z (wspólne) .js pliki dla twojego projektu.

CF

+11

Nie musisz podpisywać swojego imienia, gdy już podpisałeś dla siebie podpis. – random

+0

Czy istnieje sposób na dodanie go ze sterownika? Mam starszą aplikację codeigniter i używa ona pliku nagłówkowego, który jest udostępniany przez grupę wewnętrznych, instytucjonalnych stron internetowych. Wiem, że mogę z łatwością powiedzieć "" (niektóre przeglądarki nie lubią samozamykającej się wersji powyżej). W każdym razie nie jest zgodne z W3C, aby dodać CSS w dowolnym miejscu z wyjątkiem nagłówka, a ja wolałbym dołączyć mój JS również do nagłówka. Z web2py mogę zrobić response.append(URL('static','file.css')). Inne aplikacje CI w naszej instytucji Widziałem coś takiego jak this->addJS("file.js"); czy istnieje standard CI? – Kasapo

+0

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

6

pierwsze pytanie:

To zależy, jeśli używasz bezwzględnych lub względnych adresów URL.

Urlopy bezwzględne pochodzą z katalogu głównego Twojej domeny. Relatywne adresy URL są ładowane względnie z bieżącego katalogu (łącznie z segmentami URL).

Drugie pytanie: Najlepiej użyć bezwzględnego adresu URL. Ze względu na ładne adresy URL nie zaleca się używania względnych adresów URL.

Najprostszym sposobem jest użycie url helper a następnie użyj funkcji URL witryny takiego:

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

Ps. Polecam umieścić takie rzeczy jak javascript i obrazy poza katalogiem CodeIgniter.

4

base_url() zawsze działa dobrze dla mnie

14

Jest mniej znane rozwiązanie, które działa bardzo dobrze z czystym składni i znacznie więcej niż przenośność twardych kodowania plików URL lub względnych.

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

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

Przeczytaj więcej o tym, jak, co, dlaczego na moim artykule "Asset handling in CodeIgniter with the BASE tag".

+0

Dzięki. To naprawdę zmieniło mój świat :) – unni

+0

To zadziałało, ale chciałbym, żeby twój link działał. –

-1

Najłatwiej można bezpośrednio uzyskać dostępu do pliku:

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

gdzie ci jest dla CodeIgniter.

0

Oto rozwiązanie szczególnie istotne dla OP, którego nie sądziłem, że ktoś inny dostarczył.

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

Więc base_url() zapewni bezpośrednią ścieżkę do katalogu głównego witryny.

Powiązane problemy