December 29th, 2011 Category: Curso Zend Framework
42 Comments »
En los anteriores capitulos habiamos usado el video como metodo de aprendizaje, hoy habiendo cubierto la parte inicial y basica de Zend Framework, creo que estamos preparados para dejar el video atras, y continuar los capitulos leyendo un poco.
En este capitulo vamos a ver como crear un sistema de login en nuestro proyecto. Nosotros actualmente en nuestro portal de noticias tenemos una pantalla donde publicamos nuestras noticias. Pero actualmente esa pantalla es accesible por cualquier persona.
El objetivo de este capitulo es crear una pantalla de login, y restringir el acceso a la administracion de las noticias solo a las personas que tengan usuario y contraseña.
Lo primero que vamos a hacer es crear un nuevo controller, UsuarioController.php
El codigo de este controller inicialmente sera asi.
class UsuarioController extends Zend_Controller_Action
{
public function init()
{
}
public function loginAction()
{
$form = new Application_Form_Login();
if( $this->getRequest()->isPost() ){
if( $form->isValid( $this->_getAllParams() )) {
// Do something
}
}
$this->view->form = $form;
}
}
Para este controller vamos a tener que crear una vista asi que creamos la carpeta en views/scripts/usuario y agregamos el archivo login.phtml, donde vamos a imprimir el formulario y mostrar un mensaje, el archivo quedaria asi
<div>
<h2>Ingresar al sistema</h2>
<?php echo $this->form ; ?>
</div>
Tambien vamos a necesitar un formulario para poder ingresar usuario y contraseña.
Creamos el archivo en forms/Login.php
Este formulario va a tener un input para el usuario otro para el contraseña, y el boton de submit, el formulario Login.php nos quedaria asi.
class Application_Form_Login extends Zend_Form
{
public function init()
{
$this->addElement(
'text', 'username', array(
'label' => 'Usuario:',
'required' => true
)
);
$this->addElement(
'password', 'password', array(
'label' => 'Contraseña:',
'required' => true
)
);
$this->addElement(
'submit', 'Ingresar', array()
);
}
}
Hasta ahora no vimos nada nuevo, es mas o menos el mismo mecanismo que usamos para crear un nuevo post. Si entramos en la url de nuestro proyecto /usuario/login vamos a ver el formulario de login como aparece en la siguiente imagen.

Ahora que tenemos el codigo vamos a crear una tabla donde se van a guardar todos los usuarios que van a tener permisos al panel de administracion de nuestro proyecto. El sql para crear la tabla es el siguiente.
CREATE TABLE IF NOT EXISTS `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(40) NOT NULL,
`password` char(40) NOT NULL,
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
);
INSERT INTO `users` (`username`, `password`) VALUES
('pablo', '7c4a8d09ca3762af61e59520943dc26494f8941b');
Nuestra tabla de usuario es bastante sencilla, por ahora vamos a cumplir con los requerimientos minimos. El hash extraño que se ve es la contraseña “123456″ encriptada con la funcion sha1()
Ahora que ya tenemos un usuario (pablo) y una contraseña (123456), nos falta agregar la logica para que se valide si el usuario existe o no.
Zend Framework nos brinda el componente Zend_Auth el cual a partir de sus Adapters, nos permite validar un usuario y loguearlo en el sistema. La forma de usarlo es bastante simple, Zend Auth entiende identidad y credencial, donde la identidad es el nombre de usuario o mail que vamos a usar para identificar a un usuario dentro del sistema, y la credencia es la contraseña.
Nosotros vamos a usar Zend_Db_Adapter_DbTable el cual se encarga de validar el usuario y contraseña en nuestra base de datos.
El codigo cuando usemos Zend_Auth deberia ser el siguiente.
$authAdapter = new Zend_Auth_Adapter_DbTable();
$authAdapter
->setTableName('users')
->setIdentityColumn('username')
->setCredentialColumn('password');
$authAdapter
->setIdentity('pablo')
->setCredential(sha1('123456'));
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($authAdapter);
if( $result->isValid() ){
echo "Estamos Logueado!";
}else{
echo "Datos incorrecto";
}
Ahora este codigo vamos a adaptarlo a nuestro controller. Nos quedaria asi
class UsuarioController extends Zend_Controller_Action
{
public function init()
{
}
public function loginAction()
{
$form = new Application_Form_Login();
if( $this->getRequest()->isPost() ){
if( $form->isValid( $this->_getAllParams() )) {
$authAdapter = new Zend_Auth_Adapter_DbTable();
$authAdapter
->setTableName('users')
->setIdentityColumn('username')
->setCredentialColumn('password');
$authAdapter
->setIdentity($form->getValue('username'))
->setCredential(sha1($form->getValue('password')));
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($authAdapter);
if( $result->isValid() ){
return $this->_redirect('/posts/listar');
}else{
$form->username->addErrorMessage('Datos Incorrectos');
}
}
}
$this->view->form = $form;
}
}
Con este codigo cada vez que nos identifiquemos correctamente nos va a redirigir a /posts/listar donde vamos a mostrar todas las noticias.
Ahora los que nos faltaria agregar es que en cada lugar donde nosotros queramos restringir el acceso, agregar el chequeo si el usuario esta logueado o no, sino esta logueado vamos a redireccionarlo a la pantalla de login.
En cada action que querramos validar esto vamos a agregar el siguiente codigo.
$auth = Zend_Auth::getInstance();
if (! $auth->hasIdentity()) {
return $this->_redirect('/usuarios/login');
}
Notese que en el caso de PostsController, tenemos metodos que son de acceso publico y acceso privado, si llegado el caso tenemos un Controller donde necesitamos que todos los metodos sean de alcance privado, las lineas de arriba podemos escribirlas en el metodo init() de nuestro controller, ese metodo init se va a llamar antes de ejecutar un action de ese controller, y de esta forma evitamos repetir codigo.
Hay otras practicas para mejorar esto pero eso podemos verlo mas adelante.
Ahora que restringimos el acceso, vamos a necesitar la posiblidad de desloguearnos del sistema, para eso vamos agregar un link en nuestro layout.phtml en la parte del menu, que nos redireccione a /usuarios/logout y este es el codigo de nuestro action para desloguarnos.
public function logoutAction()
{
Zend_Auth::getInstance()->clearIdentity();
return $this->_redirect('/usuario/login');
}
Bastante simple, no
, asi es todo con Zend Framework.
Ahora, vamos a dejarlo mas bonito a todo esto, y vamos validar en la vista si el usuario esta logueado, voy a mostrar un link a logout, si esta deslogueado voy a mostrar un link a la pantalla de login. El codigo a agregar en nuestro layout seria el siguiente.
<?php
$auth = Zend_Auth::getInstance();
if ( $auth->hasIdentity()) :
?>
<li>Usuario:<?php echo $auth->getIdentity() ?></li>
<li><a href="/usuario/logout">Logout</a>
<?php else: ?>
<li><a href="/usuario/login/">Login</a>
<?php endif;?>
Y con esto ya somos capaces de agregar un sistema de login en nuestros proyectos usando Zend Framework.
November 14th, 2011 Category: Curso Zend Framework
31 Comments »
En el video de hoy voy a mostrarles como hacer un join con otras tablas, en nuestro caso tenemos la tabla posts, y la tabla categories, vamos a tratar de crear posts que tengan una categoria asociada y mostrar los post a partir de la categoria por la que filtramos.
Para esto vamos a usar un Join para mostrar los nombres de las categorias a las que esta asociada una noticia, y un helper de la vista para mostrar el listado de categorias dentro de nuestro layout.
Aca les dejo el video
Como material extra pueden leer Zend_Db_Select aca van encontrar todo lo referente a armar querys con Zend Framework
October 23rd, 2011 Category: Curso Uncategorized Zend Framework
15 Comments »
Se hizo esperar este ultimo capitulo, la verdad es que tuve algunos problemas con los codecs, y poco tiempo para resolver este problemita.
Lo prometido es deuda y hoy les voy a mostrar como crear un sitio multidioma.
Como primera medida me baje las banderitas desde iconfinder y las agregue en el top bar de la aplicacion.
Aca les dejo el video para que vean lo simple que es crear un sitio multiidioma con Zend Framework.
October 2nd, 2011 Category: Curso Zend Framework
20 Comments »

En este video vamos a darle un poco de estilo al proyecto usando Twitter Bootstrap, bootstrap es una estructura de diseno y contiene varias herramientas que nos van a facilitar trabajar con el diseno.
Esto puede usarse como base para cualquier proyecto.
Pueden ver mas de este proyecto aca Boostrap from Twitter, tambien pueden encontrar este proyecto en github
Aca les dejo el video para que vean como agregar Bootstrap en Zend Framework.
October 2nd, 2011 Category: Curso Zend Framework
21 Comments »

Hoy vamos a ver como conectar nuestra aplicacion con Twitter.
Lo mas importante por ahora es conseugir que un usuario se pueda identificar con su cuenta de twitter. Vamos a usar para esto Zend_Oauth, que nos facilita la conexion con cualquier sistema que use este protocolo.
Tambien vamos a usar los Services de Zend Framework, los cuales nos brinda una interfaz para facilitar la interaccion con otros servicios externos, como Twitter, Technoratti, Yahoo, etc.
Gracias Maestros del Web, por la publicacion, hace click en la imagen para ir al post en maestrosdelweb.com
En el proximo capitulo vamos a ver como hacer un sitio multi idioma.
September 16th, 2011 Category: Curso php5 Programacion Zend Framework
55 Comments »
Con este video concluye la serie inicial de videos. Hoy vamos a ver como Editar, Borrar, y Paginar nuestros datos.
Vamos a ver como manipular un row facilmente, para borrarlo y editarlo. Vamos a usar Zend_Paginator para paginar resultados facilmente con Zend Framework.
Con estos 5 videos ustedes deberian ser capaces de empezar a trabajar con Zend Framework, hay mucho para aprender no se desmoralicen si se traban con algo, nos pasa a todos y todos los dias.
Ahora les dejo para que vean, recuerden verlo en HD.
No se olviden de twitearlo/plusearlo/Facebookearlo
Si tienen dudas comenten, estoy archivando toda las dudas que surgen en los comentarios para despues crear mas video a partir de esas inquietudes.
Capitulos Anteriores
Capitulo 1 < Configuracion y creacion del proyecto
Capitulo 2 < Estructura de directorios, MVC y layouts
Capitulo 3 < Objeto view, y contenido estatico
Capitulo 4 < Modelos y Formularios
September 12th, 2011 Category: Curso php5 Programacion Zend Framework
23 Comments »
Llego la hora de hacer algo util, hoy vamos a ver como configurar nuestra aplicacion para trabajar con una base de datos mysql, para eso vamos a usar Zend_Form para crear formularios y vamos a crear modelos para poder traer datos de nuestras tablas y poder escribir en ellas.
Si te perdiste el video anterior podes verlo aca
Es recomendable ver el video en 720p de resolucion y en pantalla completa.
Los que quieran descargarse el codigo fuente pueden hacerlo desde github en http://github.com/pablofmorales/News123
Capitulos Anteriores
Capitulo 1 < Configuracion y creacion del proyecto
Capitulo 2 < Estructura de directorios, MVC y layouts
Capitulo 3 < Objeto view, y contenido estatico
Proximo capitulo > Edicion, y Paginado.
Gracias Maestrosdelweb por darme un espacio en su cuenta de youtube
August 31st, 2011 Category: php5 Programacion Zend Framework
No Comments »
Muchas veces necesitamos guardar una fecha en mysql, y recibimos una fecha con el formato dd/mm/yyyy, pero en Mysql es necesario guardarlo con el formato yyyy-mm-dd.
Esto no supone ningun inconveniente con Zend Framework, la verdad es que es bastante simple.
Lo primero que hacemos es recibir la fecha como viene, y crear una instancia de Zend_Date
$fechaInicial = "25/08/2016";
$fecha = new Zend_Date($fechaInicial, 'dd/mm/yyyy');
echo $fecha->get('yyyy-mm-dd');
Con el metodo get y pasando como parametro, el formato que necesitamos es todo lo que necesitamos para guardar ese valor con un formato de fecha valido en nuestra base de datos.
August 15th, 2011 Category: Curso php5 Programacion Zend Zend Framework
16 Comments »
En este capitulo vemos como pasar datos desde un controller hacia la vista, o el layout. Tambien agregamos archivos estaticos al proyecto, css, js, e imagenes.
Si te perdiste el video anterior podes verlo aca
Es recomendable ver el video en 720p/1080p de resolucion y en pantalla completa.
Los que quieran descargarse el codigo fuente pueden hacerlo desde github en http://github.com/pablofmorales/News123
Capitulo 1 < Configuracion y creacion del proyecto
Capitulo 2 < Estructura de directorios, MVC y layouts
Proximo capitulo > Base de datos y Modelos
July 27th, 2011 Category: Curso php5 Programacion Zend Zend Framework
28 Comments »
Ya esta el capitulo dos del video tutorial de Zend Framework, en esta edicion vamos a dar un repaso sobre la estructura de direcotrios de Zend Framework, editar los controllers, las vistas, y el layout de nuestra aplicacion.
Tambien vamos a empezar a darle forma a nuestro proyecto. Y entender la diferencia entre el contenido estatico y el contenido generado por nuestro MVC.
Espero que lo disfruten, pueden usar los comments de este blog para plantear dudas, pedir que se refuerce algun tema, o pedir temas a tocar en el futuro.
Si te perdiste el video anterior podes verlo aca
Es recomendable ver el video en 720p de resolucion y en pantalla completa.
Los que quieran descargarse el codigo fuente pueden hacerlo desde github en http://github.com/pablofmorales/News123
Capitulo Anterior < Configuracion y creacion del proyecto
Proximo capitulo > Enviar parametros a las vistas y agregar archivos js y css a nuestro proyecto.



