Tag: Codeigniter

Como correr multiples aplicaciones con una instalación de Codeigniter

Por default se asume que vas a usar Codeigniter para manejar una sola aplicación, pero, debes saber que es posible correr varios sitios desde una misma instalación.

Cada sitio tendrá su propio folder application, pero todos van a compartir el mismo folder system.

Para que esto suceda debes mover la carpeta applications que viene por default dentro del folder system al root de nuestra instalación.

Luego busca en el index.php que está en el root de la instalación la línea que tiene: $application_folder = “application”; Y sustituyelo por: $application_folder = “../application”;

Ahora puedes copiar el folder application de system de nuevo al root de la instalación y renombrarlo a como quieras que se llame tu nueva aplicación. Cada aplicación debe tener su propio archivo index.php donde debes buscar la línea que tiene:  $system_folder = “system”; y sustituirla por: $system_folder = “../system”; y donde tiene: $application_folder = “application”; sustituirla por: $application_folder = “../admin”; cambia admin por el nombre del folder donde tienes esta aplicación.

Mensajes, avisos, flashdata…

Las aplicaciones web están basadas en acciones, links, e interacción humana totalmente, lo que nos hace entender que si queremos guiar a los usuarios, debemos informarles de los resultados de sus acciones.

CodeIgniter cuenta con flashdata, que es un tipo de variable de sesión que se borra automáticamente después del siguiente request HTTP. Este tipo de variables es perfecto para mostrar mensajes de error, mensajes de éxito y notificar algo al usuario. (más…)

Moviendo la lógica de presentación de los views en CodeIgniter

Trabajando en proyectos cada vez más grandes, como programadores nos vemos obligados a aprender nuevas técnicas para acelerar el proceso de producción de código. Cuando repetimos fragmentos de nuestra aplicación en distintos archivos estamos ampliando las probabilidades de error, a parte de que tendremos que reparar el error en cada uno de los archivos.

Anteriormente hablaba de como usar helpers para no repetir código un mismo fragmento de código una y otra vez.

El tema le toca ahora a los views, que por costumbre acumulan una gran cantidad de código repetido. (más…)

CodeIgniter, Google Analytics y código reusable

Gran parte de la versatilidad de un buen framework radica en la capacidad de permitirnos reusar código, así vamos creando nuestro propio framework con una biblioteca de funciones y clases que podemos volver a usar y volver a usar y volver a usar …

Para poder escribir código reusable, debemos abstraer los procesos lo más posible, de modo que no tengamos que cambiar los archivos originales para encontrar la solución a nuevos problemas.

Para explicar mejor este concepto, un buen ejemplo sería crear un Helper para añadir el tracking code de Google Analytics.

El problema con Google Analytics es que el te da un código que ponemos antes de </body> en cada una de las paginas de nuestro website. así que sería una buena idea tener una función que nos permita escribir google_analytics(). Esto ayudaría a la portabilidad. Si el código de analytics cambia, solo tendríamos que cambiar el archivo de configuración o el Helper en vez de cambiar manualmente todos los templates.

El primer paso es definir lo que queremos:

  • Un Helper que  nos permita llamarlo para que nos imprima el código de Google Analytics con su tracking code.
  • Que verifique en un archivo de configuración, si queremos que se imprima el código y el tracking code.
  • Que opcionalmente se le pueda pasar el tracking code a la función y tome el tracking code de este argumento y no del archivo de configuración.

Comenzamos por crear un archivo de configuracion y añadir los items ( como explica la guía de codeigniter1 ) que vamos a usar en la funcion de Google Analytics

Para crear el Helper hay que tener en cuenta dos reglas:

  1. Los nombres de los archivos de helpers deben tener el prefijo _helper para ser correctamente cargados.
  2. Para utilizar el superobjecto de CodeIgniter ($this) debemos asignarlo a una variable con la función get_instance()

En el archivo analytics_helper.php

El resto es simplemente verificar si hay un tracking code como argumento, sino existe se busca el tracking code del archivo de configuración y se imprime el código de Analytics interpolando el valor del tracking code.

Pueden descargar una copia de los archivos utilizados en este ejemplo aquí. Para aprender o para usarlo en sus proximos proyectos con CodeIgniter.


Modo de uso

Copie analytics.php a la carpeta application/config y sustitúya $config['tracking_code'] por el tracking code correcto.
Copie analytics_helper.php a la carpeta application/helpers
Despues de haber llamado cada uno de estos archivos en config/autoload.php puede llamar la funcion google_analytics(); en el template y el se encarga del resto.

  1. http://codeigniter.com/user_guide/libraries/config.html []

URLs limpias con Codeigniter

Estaba trabajando en una aplicación web para un cliente, un website inmobiliario. Luego de que todo estaba listo, funcionando perfecto en mi servidor local y en un servidor que uso para probar. Había un problema con las URLs en el servidor de Godaddy de mi cliente.

Las requests estaban dando un error: “No input file specified”, cosa que resolví poniendo “index.php” en el archivo de configuración. Pero quería remover el index.php de la URL.

Aquí hay un simple método para remover el “index.php” de las URLs en las aplicaciones en desarrolladas Codeigniter.

Hay que tener en cuenta que este método solo funciona para aplicaciones desarrolladas con Codeigniter, y aunque explica como quitar el “index.php” de las URLs, no quita la necesidad del archivo index.php, que es el Front Controller. Aunque index.php no aparezca en el URL debe estar presente el nivel del root de la aplicación.

Para que esto funcione debemos estar seguros de que nuestro Apache use el mod_rewite y que acepte configuraciones por medio de .htaccess, luego de estar seguros de esto debemos ejecutar los siguientes pasos:

  • Crear un .htaccess para configurar el engine de escritura de URLs (rewrite engine)
  • Asignar un string vacio a $config['index_page'] en el archivo config.php
  • Reiniciar el Apache y probar

1- Crear el archivo .htaccess

Crea un nuevo archivo llamado .htaccess y colocalo en tu directorio web.

2- Asignar un string vacio a $config['index_page'] en el archivo config.php

abre tu system/application/config/config.php

busca la linea que asigna $config['index_page'], usualmente:

$config['index_page'] = 'index.php';

y cambiala a:

$config['index_page'] = '';

Graba el archivo.

3- Reiniciar el Apache y probar

funciono??

Si no funciono, no te rindas, llenate de paciencia, prueba de nuevo todos los pasos y si aún así no funciona, postea en el foro con todos los detalles de tu instalación.

CodeIgniter a primera vista

He estado envuelto últimamente, durante todo el tiempo que tenía sin escribir aquí, en dos proyectos usando el Framework de PHP, Code Igniter. Siempre hé encontrado que los frameworks son rígidos, Codeigniter es todo lo contrario, que es lo que más me gusta. Se instala en un folder en el root de tu proyecto web, provee un framework MVC, una amplia gama de helpers y una gran cantidad de documentación.

Codeigniter hace que muchas cosas sean automáticas, pero no todo, lo que también es bueno. Para mi ha sido muy claro donde van las cosas y como hacerlas para lograr lo que he querido. También a sido muy fácil integrar fragmentos de código que tenía guardados aquí y allá.

Me parece lo suficientemente maduro para producción, es rapido, facilita las cosas para desarrollar agilmente y tiene una gran comunidad de usuarios, por lo que tengo planeado seguirlo usando para algunos proyectos que vienen por ahí, luego seguiré escribiendo sobre esto… y pronto pongo links a los proyectos.