src/Application/Controller/BasedatosController.php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\Adapter\Adapter;
use Zend\Db\Sql\Sql;
use Application\Model\Entity\Usuarios;
class BasedatosController extends AbstractActionController {
public $dbAdapter;
public function indexAction() {
return new ViewModel();
}
// ***************************
public function mostrarAction() {
$this->dbAdapter=$this->getServiceLocator()->get('Zend\Db\Adapter');
$u = new Usuarios($this->dbAdapter);
$valores = array
(
"titulo" => "Mostrando datos desde TableGateway",
'datos' => $u->getUsuarios()
);
return new ViewModel($valores);
}
// ***************************
public function verAction() {
$this->dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter');
$u = new Usuarios($this->dbAdapter);
$id = (int) $this->params()->fromRoute('id', 0); // sacar el id por la url GET
$valores = array(
"titulo" => "Mostrando detalle del usuario",
'datos' => $u->getUsuarioPorId($id)
);
return new ViewModel($valores);
}
// ***********************************
public function addAction() {
$this->dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter');
$u = new Usuarios($this->dbAdapter);
$data = array(
"nombre" => "usernuevo",
"email" => "usernuesssvo@gmail.com"
);
$u->addUsuario($data);
// $u->updateUsuario("3",$data);
//
// una vez hecho mostrar todos los registros de nuevo
$valores = array(
"titulo" => "Insertando uno nuevo",
"datos" => $u->getUsuarios()
);
return new ViewModel($valores);
}
// ***********************************
public function updateAction() {
$this->dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter');
$u = new Usuarios($this->dbAdapter);
$data = array(
"nombre" => "usermodificado",
"email" => "usermodificado@gmail.com"
);
$u->updateUsuario("4",$data);
// una vez hecho mostrar todos los registros de nuevo
$valores = array(
"titulo" => "Modificando un registro",
"datos" => $u->getUsuarios()
);
return new ViewModel($valores);
}
// ***********************************
public function deleteAction() {
$this->dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter');
$u = new Usuarios($this->dbAdapter);
$data = array(
"nombre" => "usermodificado",
"email" => "usermodificado@gmail.com"
);
$u->deleteUsuario("4", $data);
// una vez hecho mostrar todos los registros de nuevo
$valores = array(
"titulo" => "Borrando un registro",
"datos" => $u->getUsuarios()
);
return new ViewModel($valores);
}
}
-------------------------------------------------------------------------------
src/Application/Model/Entity/Usuarios.php
namespace Application\Model\Entity;
use Zend\Db\TableGateway\TableGateway;
use Zend\Db\Adapter\Adapter;
class Usuarios extends TableGateway {
public function __construct(Adapter $adapter = null, $databaseSchema = null, ResultSet $selectResultPrototype = null) {
return parent::__construct('usuarios', $adapter, $databaseSchema, $selectResultPrototype);
}
public function getUsuarios() {
$datos = $this->select();
return $datos->toArray();
}
public function getUsuarioPorId($id) {
$id = (int) $id;
$registro = $this->select(array('id' => $id));
$row = $registro->current();
if (!$row) {
throw new \Exception("No hay registros asociados al valor $id");
}
return $row;
}
public function addUsuario($data=array()) {
$this->insert($data);
}
public function updateUsuario($id, $data=array()) {
$this->update($data, array('id' => $id));
}
public function deleteUsuario($id) {
$this->delete(array('id' => $id));
}
}
---------------------------------------------------------------------
view/Application/basedatos/mostrar.phtml
<h1><?php echo $this->titulo?></h1>
<table style="width:400px; text-align:left">
<tr>
<th>Id</th>
<th>Nombre</th>
<th>E-Mail</th>
</tr>
<?php foreach ($this->datos as $dato){ ?>
<tr style="background-color:<?php echo $this->cycle(array("#F0F0F0","#FFFFFF"))->next()?>">
<td><?php echo $dato["id"] ?></td>
<td><?php echo $dato["nombre"] ?></td>
<td><?php echo $dato["email"] ?></td>
<td>
<a href="<?php echo $this->basePath() ?>/application/basedatos/ver/<?php echo $dato["id"]?>">ver</a>
</td>
</tr>
<?php } ?>
<?php
$this->cycle()->assign(array("#F0F0F0", "#FFFFFF"));
$this->cycle()->prev();
?>
</table>
Las vistas de add.phtml, delete.phtml y update.phtml serán idénticas a las de mostrar.phtml
------------------------------------------------------
Para verlo:
http://localhost/zend/zendproyecto8LSG/public/application/basedatos/mostrar
http://localhost/zend/zendproyecto8LSG/public/application/basedatos/add
http://localhost/zend/zendproyecto8LSG/public/application/basedatos/update
http://localhost/zend/zendproyecto8LSG/public/application/basedatos/delete
No hay comentarios:
Publicar un comentario