2009-10-09 34 views
7

¿Dónde y cómo incluyo archivos .js en Views in CodeIgniter?CodeIgniter: ¿Cómo incluyo un archivo .js a la vista?

He intentado esto:

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

Como me di cuenta de que el index.php es el que está cargando los puntos de vista, así que supongo que cada vez que una página se carga la ruta de directorio actual es en la raíz porque index.php se encuentra en la raíz. ¿Es esto cierto?

La línea anterior no lo hace, así que estoy haciendo algo mal. Tengo un proyecto CodeIgniter. La ruta es la siguiente:

localhost/CodeIgniter/system/application 

por lo qué camino debo usar para incluir archivo de mi jquery.js que se encuentra en

localhost/CodeIgniter/system/application/libraries 

cuando quiero cargar el archivo jquery.js en una vista se encuentra aquí:

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

Respuesta

6

No es el archivo "index.php" que es la vista. La vista se lo está cargado en el controlador cuando se hace una

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

el archivo "viewname.php", entonces puede incluir los Js archivos, al igual que una normal de .html (o ) archivo .php haría:

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

Es posible que desee crear una vista por defecto o una vista de "cabecera" que incluye algunos o todos los (común) .js archivos para su proyecto.

-CF

+11

No necesita firmar su nombre cuando ya tiene su avatar firmando para usted. – random

+0

¿Hay alguna forma de agregarlo desde el controlador? Tengo una aplicación codeigniter heredada y utiliza un archivo de encabezado que comparte un grupo de sitios web institucionales internos. Sé que puedo decir fácilmente "" (algunos navegadores no les gusta la versión de cierre automático anterior). De todos modos, no es compatible con w3c agregar CSS en ninguna parte excepto el encabezado, y preferiría incluir mi JS en el encabezado también. Con web2py, puedo hacer response.append(URL('static','file.css')). Otras aplicaciones de CI en nuestra institución He visto algo como this->addJS("file.js"); ¿Existe un estándar de CI? – Kasapo

+0

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

6

Primera pregunta: ¿

depende si se utilizan URLs absolutas o relativas.

Las URL absolutas van desde la raíz de su dominio. Las URL relativas se cargan relativas desde el directorio actual (incluidos los segmentos de URL).

Segunda pregunta: Lo mejor es usar una URL absoluta. Debido a las bonitas URL, no se recomienda el uso de URLs relativas.

La forma más sencilla es utilizar el url helper y luego utilizar la función de sitio URL como esta:

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

Sal. Recomiendo poner cosas como javascript e imágenes fuera del directorio CodeIgniter.

4

base_url() siempre funciona bien para mí

14

hay una solución menos conocida que funciona muy bien con la sintaxis limpia y mucho más la portabilidad de los archivos de URL o relativos codificantes duros.

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

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

Lea más sobre cómo, qué, por qué en mi artículo "Asset handling in CodeIgniter with the BASE tag".

+0

Gracias. Esto realmente cambió mi mundo :) – unni

+0

Esto funcionó para mí, pero me gustaría que tu enlace funcionara. –

-1

La forma más sencilla se puede acceder directamente al archivo:

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

donde ci es de CodeIgniter.

0

Aquí hay una solución específicamente relevante para el OP que no pensé que alguien más proporcionara.

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

Así, base_url() proporcionará un camino directo a la raíz de su sitio.

Cuestiones relacionadas