Les mando las actividades correspondientes a este fin de semana, que por motivo del puente seguramente olvidarían hacerlas en estos días:
PRIMERA PARTE
1. necesitan ejecutar el siguiente comando en la carpeta raíz de la aplicación:
php composer.phar require zendframework/zend-developer-tools:dev-master
2. Copiamos el archivo
vendor/zendframework/zend-developer-tools/config/zenddevelopertools.local.php.dist
en la carpeta
y le cambiamos el nombre a
3.modificamos la siguiente sección en el archivo primera-aplicacion/config/application.config.php:
//... aqui va código
return array(
//Especificamos los módulos que integran nuestra aplicación y que usaremos
'modules' => array(
'ZendDeveloperTools', //<-- agregamos la siguiente línea
'Application',
'Login',
//... aqui va mas código
4. Probamos los enlaces del mensaje previo a este.
SEGUNDA PARTE
En esta arte haremos modificaciones a varios de los archivos.
1. Dentro de primera-aplicacion/module/Usuarios/Module.php:
<?php
namespace Usuarios;
// Importamos las siguientes clases para el manejo del modelo :
use Usuarios\Model\Usuario;
use Usuarios\Model\UsuarioTable;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\TableGateway\TableGateway;
class Module {
//**** aqui esta el código que agregamos de manera previa; son los metodos
// getConfig() y getAutoloaderConfig() {
/*
* Funcion mediante la cual definimos el mapeo de una tabla
* en nuestra BD con el objeto asociado en el modelo
*/
public function getServiceConfig() {
return array('factories' => array(
'Usuarios\Model\UsuarioTable' => function($sm) {
//<-- definimos el mapeo de nuestra clase con el adaptador
$tableGateway = $sm -> get('UsuarioTableGateway');
$table = new UsuarioTable($tableGateway);
return $table;
},
'UsuarioTableGateway' => function($sm) {
$dbAdapter = $sm -> get('Zend\Db\Adapter\Adapter');//<-- configuramos el adaptador
$resultSetPrototype = new ResultSet();
$resultSetPrototype -> setArrayObjectPrototype(new Usuario());
return new TableGateway('usuarios', $dbAdapter, null, $resultSetPrototype);//<-- especificamos la tabla en nuestra BD
},
),
);
}
}
2. Creamos el archivo primera-aplicacion/module/Usuarios/src/Usuarios/Model/Usuario.php
<?php
namespace Usuarios\Model;
class Usuario {
public $id;
public $username;
public $pass;
public $email;
public $nombre;
public $a_paterno;
public $a_materno;
public $sexo;
public $f_nacimiento;
/** * Funcion que mapea los datos (en los campos/variables) del objeto recibido con los del
* objeto Usuario
* @param Object $data el objeto a mapear
*/
public function exchangeArray($data) {
$this -> id = (!empty($data['id'])) ? $data['id'] : null;
$this -> username = (!empty($data['username'])) ? $data['username'] : null;
$this -> pass = (!empty($data['pass'])) ? $data['pass'] : null;
$this -> email = (!empty($data['email'])) ? $data['email'] : null;
$this -> nombre = (!empty($data['nombre'])) ? $data['nombre'] : null;
$this -> a_paterno = (!empty($data['a_paterno'])) ? $data['a_paterno'] : null;
$this -> a_materno = (!empty($data['a_materno'])) ? $data['a_materno'] : null;
$this -> sexo = (!empty($data['sexo'])) ? $data['sexo'] : null;
$this -> f_nacimiento = (!empty($data['f_nacimiento'])) ? $data['f_nacimiento'] : null;
}
}
3. creamos el archivo primera-aplicacion/module/Usuarios/src/Usuarios/Model/UsuarioTable.php
<?php
namespace Usuarios\Model;
use Zend\Db\TableGateway\TableGateway;
class UsuarioTable {
protected $tableGateway;
/**
* Constructor de la clase UsuarioTable
* @param TableGateway $tableGateway el adaptador configurado ara nuestra clase
*/
public function __construct(TableGateway $tableGateway) {
$this -> tableGateway = $tableGateway;
}
/**
* Mostramos todos los registros
*@return array el conjunto de todos los registros en forma de un arreglo
*/
public function fetchAll() {
$resultSet = $this -> tableGateway -> select();
return $resultSet;
}
/**
* Mostramos el registro asociado al id
* @param int $id identificador asociado al registro
* @return array el arreglo que representa al registro aociado con el id
*/
public function getUsuario($id) {
//Nota: necesitamos hacer una consulta y luego procesarel/los resultado(s) de dicha consulta
}
/**
* Guardamos el registro asociado al onjeto usuario. Si el objeto existe, se actualizan los datos
* En caso contrario, se agrega un nuevo registro a a base de datos asociado al objeto
* @param Usuario $usuario objeto a guardar
*/
public function saveUsuario(Usuario $usuario) {
/*Hint: hacemos tres pasos:
*1. mapeo de datos del objeto
*2. obtenemos el valor id del objeto
*3. insersión de nuevo registro o actualización de un registro existente
*/
}
/**
* Eliminamos el registro asociado al id
* @param int $id identificador asociado al registro
*/
public function deleteUsuario($id) {
/*
* Hint: solo borramos
*/
}
}
4. Hacemos la siguiente modificaión al archivo primera-aplicacion/module/Usuarios/src/Usuarios/Controller/UsuariosController.php
<?php
namespace Usuarios\Controller;
//Realizamos los siguientes imports
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class UsuariosController extends AbstractActionController{
//definimos el objeto para reallizar las operaciones en la tabla de la base de datos (BD)
protected $usuarioTable;
//método que devuelve una instancia del objeto UsuarioTable para realizar operaciones en la BD
public function getUsuarioTable(){
if (!$this->usuarioTable) {
$sm = $this->getServiceLocator();
$this->usuarioTable = $sm->get('Usuarios\Model\UsuarioTable');
}
return $this->usuarioTable;
}
public function indexAction(){
//antes
//return new ViewModel();
//ahora
return new ViewModel(array(
'usuarios' => $this->getUsuarioTable()->fetchAll(),
)
);
}
//... aqui va más código ...
5. Modificamos el archivo \primera-aplicacion\module\Usuarios\view\usuarios\usuarios\index.phtml
<?php
$title = 'Listado de todos los Usuarios';
$subtitle='Primera Aplicación';
$this -> headTitle($title);
?>
<header class="page-header well">
<h1><?php echo $this -> escapeHtml($title); ?> <small><?php echo $this -> escapeHtml($subtitle); ?></small></h1>
</header>
<p>
<a class="btn btn-primary btn-lg" href="<?php echo $this -> url('usuarios', array('action' => 'agregar')); ?>">Agregar nuevo usuario</a>
</p>
<table class="table">
<tr>
<th>username</th>
<th>pass</th>
<th>email</th>
<th>nombre</th>
<th>a_paterno</th>
<th>a_materno</th>
<th>sexo</th>
<th>f_nacimiento</th>
</tr>
<?php foreach ($usuarios as $usuario) : ?>
<tr>
<td><?php echo $this -> escapeHtml($usuario -> username ); ?></td>
<td><?php echo $this -> escapeHtml($usuario -> pass ); ?></td>
<td><?php echo $this -> escapeHtml($usuario -> email ); ?></td>
<td><?php echo $this -> escapeHtml($usuario -> nombre ); ?></td>
<td><?php echo $this -> escapeHtml($usuario -> a_paterno ); ?></td>
<td><?php echo $this -> escapeHtml($usuario -> a_materno ); ?></td>
<td><?php echo $this -> escapeHtml($usuario -> sexo ); ?></td>
<td><?php echo $this -> escapeHtml($usuario -> f_nacimiento ); ?></td>
<td>
<a class="btn btn-warning" href="<?php echo $this -> url('usuarios', array('action' => 'editar', 'id' => $usuario -> id)); ?>">Editar</a>
<a class="btn btn-danger" href="<?php echo $this -> url('usuarios', array('action' => 'borrar', 'id' => $usuario -> id)); ?>">Borrar</a>
</td>
</tr>
<?php endforeach; ?>
</table>
6. Escribimos la siguiente url en nuestro navegador:
NOTA FINAL:
revisen los siguientes enlaces: