Bienvenidos sean a este post, hoy continuaremos con el CMS.
En el post anterior establecimos la base de nuestro CMS, hoy nos centraremos en las pequeñas modificaciones que debemos hacer sobre nuestro framework para poder habilitar la nueva «aplicacion», nuestro primer cambio sera en el archivo nav.php qie esta ubicado en app/Views/layouts, en este caso agregaremos el boton de los contactos junto a los que nos conceden acceso a Admin y Usuarios:
<ul class="nav navbar-nav">
<li><a href="/">Admin</a></li>
<li><a href="/contactos">Contactos</a></li>
<li><a href="/usuarios">Usuarios</a></li>
</ul>
En este caso podemos ver que solamente se debe agregar la linea del medio al codigo ya existente, nos permitira acceder a los contactos desde el dashboard, nuestro siguiente paso sera ir al archivo Contacto.php en el directorio app/Modelos, en este archivo haremos algunas modificaciones, la primera sera reemplazar al siguiente metodo:
public function getContactos()
{
return $this->db->select('* FROM contactos');
}
De la siguiente forma:
public function get_contactos()
{
return $this->db->select('* FROM contactos order by apellido asc');
}
En este caso primero modificamos el nombre, luego en el query agregamos que lo ordene alfabeticamente de forma ascendente o alfabeticamente en este caso, con este metodo obtendremos todos los contactos pero si necesitamos uno especifico? Para eso debemos agregar el siguiente metodo:
public function get_contacto($id)
{
$datos = $this->db->select('* FROM contactos where id = :id',
[':id' => $id]);
return (isset($datos[0]) ? $datos[0] : null);
}
Este es muy similar al anterior pero con la diferencia de que agregamos un condicional en base al id que recibimos como argumento, pero nos seguira devolviendo todos los datos del contacto, luego lo devolveremos pero observen el detalle donde le pedimos que verifique si existe un campo del query anterior, en caso de ser verdadero devuelve todo el objeto creado de lo contrario solo devuelve un null, nuestro siguiente paso sera agregar los siguientes tres metodos:
public function insert($datos)
{
$this->db->insert('contactos', $datos);
}
public function update($datos, $where)
{
$this->db->update('contactos',$datos,$where);
}
public function delete($where)
{
$this->db->delete('contactos', $where);
}
Estos son los tres metodos que utilizaremos para poder trabajar con nuestros contactos, el primero nos permitira ingresar nuevos contactos, el segundo nos permitira modificarlos y el ultimo nos permitira eliminarlos, observen que aprovecha los mismos metodos que explicamos a la hora de implementar el CRUD para las bases de datos y lo explicamos en este post, observen que en todos los casos informamos la tabla y luego pasamos un datos o un where dependiendo de la instruccion que ejecutaremos en la base de datos, con esto tenemos nuestro «nuevo» modelo, veamos su codigo completo:
Contacto.php
<?php
namespace App\Modelos;
use System\ModeloBase;
class Contacto extends ModeloBase
{
public function get_contactos()
{
return $this->db->select('* FROM contactos order by apellido desc');
}
public function get_contacto($id)
{
$datos = $this->db->select('* FROM contactos where id = :id',
[':id' => $id]);
return (isset($datos[0]) ? $datos[0] : null);
}
public function insert($datos)
{
$this->db->insert('contactos', $datos);
}
public function update($datos, $where)
{
$this->db->update('contactos',$datos,$where);
}
public function delete($where)
{
$this->db->delete('contactos', $where);
}
}
Por ultimo debemos ir a nuestro contactos.php dentro del directorio app/Controllers, en esta clase lo primero que haremos sera agregar las clases que tenemos en Helpers, para ello agreguen con las otras dos clases que importamos las siguientes lineas:
use App\Helpers\Sesion;
use App\Helpers\Url;
El siguiente paso sera agregar una nueva variable que la usaremos para contener el objeto de los contactos:
protected $contacto;
Lo siguiente sera agregar el constructor:
public function __construct()
{
parent::__construct();
if (!Sesion::get('logueado'))
Url::redireccionar('/admin/login');
$this->contacto = new Contacto();
}
Al igual que los constructores que vimos hasta ahora primero iniciamos al constructor padre, luego chequeamos si no existe la clave ‘logueado’ en nuestra sesion y en caso de ser verdaero nos deriva al metodo login de admin para ingresar con un usuario, por ultimo si la clave existe significa que estamos con el usuario ingresado correctamente por lo tanto crea el objeto de Contacto, despues tenemos el siguiente metodo en la clase:
public function index()
{
$contactos = new Contacto();
$registros = $contactos->getContactos();
return $this->view->render('contactos/index',
compact('registros'));
}
La cual reemplazaremos de la siguiente forma:
public function index()
{
$contactos = $this->contacto->get_contactos();
$titulo='Contactos';
return $this->view->render('admin/contactos/index',
compact('contactos','titulo'));
}
En este caso eliminamos la creacion del objeto, dado que lo hicimos en el constructor, pero ahora le diremos que utilice el metodo get_contactos del objeto contacto, definiremos una variable llamada titulo y luego utilizaremos a render de la clase view pero la unica diferencia estara en que lugar de enviar los registros solamente ahora pasaremos los contactos y el titulo, la pagina index no existe mas pero en el proximo post la crearemos nuevamente, por ultimo veamos como quedo nuestro codigo hasta ahora del controlador:
Contactos.php
<?php
namespace App\Controllers;
use System\ControladorBase;
use App\Modelos\Contacto;
use App\Helpers\Sesion;
use App\Helpers\Url;
class Contactos extends ControladorBase
{
public function __construct()
{
parent::__construct();
if (!Sesion::get('logueado'))
Url::redireccionar('/admin/login');
$this->contacto = new Contacto();
}
public function index()
{
$contactos = $this->contacto->get_contactos();
$titulo='Contactos';
return $this->view->render('admin/contactos/index',
compact('contactos','titulo'));
}
}
Solo nos restan algunos metodos mas para terminarlos pero estos al igual que la vista las crearemos en los proximos posts.
En resumen, hoy hemos hecho unas sutiles modificaciones, primero en el modelo, donde cambiamos una busqueda y luego agregamos una serie de metodos para poder trabajar con nuestros contactos, despues hemos modificado el controlador de contactos para que sea de la misma forma que vinimos trabajando hasta ahora, en el proximo veremos los ultimos cambios, espero les haya gustado sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
