Pregunta

Recién estoy comenzando con CodeIgniter y no estoy seguro de dónde deberían ir cosas como css, js e imágenes.Fuera, toda la carpeta del sistema parece estar bien, pero eso significa que todo está separado.Inside significa que las rutas de archivo son más largas y me preocupa que pueda estropear las cosas.¿Cuál es la mejor práctica sobre este tema?

¿Fue útil?

Solución

Normalmente pongo carpetas separadas en el nivel raíz, así que termino con una estructura de directorios como esta:

/system
/css
/js
/img

Parece que funciona para mí: cuando usa site_url(url), la URL que genera es desde la raíz, por lo que puede usar site_url('css/file.css') para generar URL a sus hojas de estilo, etc.

Otros consejos

Personalmente, rompo el application directorio fuera del system directorio y convertirlo en hermano de system.Luego creo un directorio de proyecto en public_html (www) donde muevo index.php y almaceno mis activos públicos.

Supongamos que el proyecto en el que estás trabajando se llama projekt.En el directorio principal para public_html (www) crear un directorio llamado CISYSTEM, y dentro de ese directorio crea un directorio de la versión que estás usando, 202, 210 etc.

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

La belleza de esta estructura de directorios es que agrega otra capa de seguridad y hace que sea muy fácil actualizar/cambiar su núcleo de CI.Además, se supone que no debes realizar cambios en el núcleo: tener un único directorio donde se almacena tu núcleo y tener referencias a todos los proyectos mantiene las cosas SECO.

Sin embargo, toda esta mezcla de directorios requiere que redirecciones algunas cosas.Afortunadamente, CodeIgniter lo hace fácil: todos los cambios se pueden realizar en el index.php archivo.

Abierto index.php y redirigir un par de cosas:

Cambiar: $system_path = 'system';

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

Cambiar: $application_folder = 'application';

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


Además, veo mucha gente hablando sobre el uso site_url() en las otras respuestas.Recomiendo una forma menos detallada de usar site_url()...no es necesario que lo llames cada vez si utilizas HTML <base> elemento:

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

Sólo incluye eso en tu solicitud. <head> y puedes llamar a tus controladores directamente...como en:

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

Salud

Odio tener tantos directorios en el nivel raíz, así que uso / public y uso htaccess para reescribir / scripts a / public / scripts y así sucesivamente.

Me parece mejor mantener los activos en el nivel raíz. Puede usar <?=base_url()?> para hacer eco de la raíz completa del sitio. En el archivo de configuración, configura la raíz del sitio web. Esta declaración solo hace eco de eso.

Debido a esto, puede usar incluye así:

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

en cualquier parte de su código, y seguirá obteniendo http://example.com/css/style .css .

base_url () / css / name.css

Para utilizar el ayudante site_url (url) de esta manera, DEBE configurar primero Apache mod_rewrite (o equivalente) para eliminar el segmento index.php del URI.

De lo contrario, el método site_url agrega index.php a la URL que probablemente arruinará las rutas a sus activos si los tiene en el directorio base como se muestra arriba.

Aquí está la documentación de CodeIgniter sobre la eliminación de index.php del URI:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top