Comunidad de diseño web y desarrollo en internet

Introducción al framework CodeIgniter

Mis estimados amigos, bienvenidos a esta primera parte de como usar el framework para PHP: CodeIgniter. En esta primera parte veremos cómo configurar CI y cómo usar su sistema de views, ademas de intentar conseguir una novia para Pley();.

CI es un framework orientado a objetos, aplicando el patrón de diseño Modelo Vista Controlador. Voy a dar como supuesto que todos manejan medianamente bien php y que, al igual que yo, jamas en su vida habían usado un framework. Empecemos descargando codeignaiter. Descomprimanlo y subanlo a su hosting favorito (localhost). Renombren la carpeta con el nombre del proyecto que en este caso y en honor a "Pley();" se llamara "quiero-novia" el cual sera un catalogo para una florería.

Tenemos la carpeta user_guide, system e index.php. La guía es la misma que se encuentra en su sitio oficial. El index es el mismo que se usara en este proyecto y en system está todo lo que hará funcionar el sistema, por tanto solo nos interesan los 2 últimos.

Por ultimo, creen una base de datos para el proyecto en MySQL llamada "garageflash".

Ya todo esto listo, ¡manos a la obra! la carpeta en la cual programaremos nuestra aplicación es justamente application, alojada en la carpeta system.


Empezaremos editando los archivos de configuración que necesitaremos para empezar a programar

database.php


Editaremos los datos para la conexión a nuestra DB favorita: garageflash en MySQL.

Código :

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "garageflash";
$db['default']['password'] = "clab";
$db['default']['database'] = "garageflash";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";


No me detendré a explicar que significa cada variable, por que el nombre de cada una de ellas es muy descriptivo.

config.php


Designa la ruta en la que se encuentra alojada nuestra web entre otros datos

Código :

$config['base_url']   = 'http://127.0.0.1/quiero-novia';

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

$config['uri_protocol']   = 'AUTO';

$config['url_suffix'] = '';

$config['language']   = 'spanish';

$config['charset'] = 'UTF-8';


Cuidado con la ruta que vayan a poner en $config['base_url'], si quieres salir a internet debiese ser tu IP publica o DNS.

routes.php


Código :

$route['default_controller'] = 'floreria';
$route['scaffolding_trigger'] = "";

Acá nos detendremos en 2 detalles importantes
  1. El 'default_controller' se refiere a el controlador o pagina principal **cof cof clase cof cof ** en la cual programaremos nuestra aplicación, mas adelante ahondaremos en esto.
  2. 'scafolding_trigger' sirve para usar los mentados scafolding (administración pre-fabricada), pero como no me gusta usarlos por fundadas razones dejaremos esta opción en blanco ¿razones?:
    1. No se me da la gana.
    2. Son muy estáticas, difíciles de adaptar.
    3. Inseguras, dentro de el apartado adaptar me referías integrarlas a un sistema de usuarios.
    4. En el video tutorial (en ingles) muestran como usarlas, pero como a mi no me gustan.



Empezando a programar el proyecto


Recordarás que a 'default_controller' le asignamos 'floreria'. Así se llamara nuestra clase. Creamos el archivo 'floreria.php' en la carpeta
system/aplication/controllers, en el cual crearemos nuestra clase que obviamente heredara de la clase controladores.

Código :

class Floreria extends Controller {

   function Floreria ()
   {
      parent::Controller();   
   }   
   function index()
   {
      $this->load->view('floreria');
   }
}


Dentro de esta clase está la función que siempre se llamara index. En esta clase pondremos todo lo que queremos que se muestre en la primera pantalla de nuestra clase. Si eres buen observador te darás cuenta que se esta llamando a la clase view, que es la que usaremos para manejar nuestros templates. Como primer paso, escribiremos el titulo y encabezado en nuestro template. Este código debe ir en un archivo nuevo en: system/aplication/views/floreria.php. Ese será nuestro template:

Código :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<title>Quiero Novia</title>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
   <h1>Flores Para Conseguir Novia</h1>
</body>
</html>


Grabamos y vemos el resultado en nuestro navegador.

Ahora nos toca enviar variables a nuestro template, para esto modificaremos nuestro template del siguiente modo:

Código :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<title><?php echo $titulo ?></title>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
   <h1><?php echo $encabezado ?></h1>
</body>
</html>

Y luego modificaremos nuestra función index() del siguiente modo para poder enviarle las variables requeridas:

Código :

class Floreria extends Controller {

   function Floreria ()
   {
      parent::Controller();   
   }   
   function index()
   {
      $datos['titulo']='Quiero Novia';
      $datos['encabezado']='Una Novia para Pley';
      $this->load->view('floreria',$datos);
   }
}


A la función view, además del nombre del template, le entregamos un array donde sus vectores serán las variables que se usaran en dicho template. Mira el resultado en el navegador.

Para en un futuro aplicarle formato a esta cosa y mantener la misma estructura en todo el sitio, separaremos el template en 3 partes:

header


Código :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<title><?php echo $titulo ?></title>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>


contenido (en este caso floreria)


Código :

<h1><?php echo $encabezado ?></h1>


foot


Código :

</body>
</html>



Ahora nuestra función index() de la clase florería quedaría así:

Código :

   function index()
   {
      $datos['titulo']='Quiero Novia';
      $datos['encabezado']='Una Novia para Pley';
      $this->load->view('header',$datos);
      $this->load->view('floreria',$datos);
      $this->load->view('foot);
   }


Ahora subiremos datos a nuestro sistema, para lo cual crearemos una segunda clase llamada 'admin' en la cual administraremos el sistema. En este paso voy a obviar el infaltable sistema de usuarios, para el cual pueden seguir esta serie de tutoriales que trata a profundidad el tema.

Continuará.

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate