Desarrollo web MAMP con CakePHP (III)

En esta tercera y última parte se va a desarrollar la aplicación a partir del esqueleto ya disponible en la aplicación pastelito. La aplicación va listar los productos disponibles y su precio, en este caso tartas, por lo que siguiendo las convenciones de CakePHP se va a crear un modelo (Tarta) que implementa los datos, un controlador (TartasController) que realizará la lógica, y una vista (tartas/index.ctp) que mostrará la información y se corresponde con la función definida en el controlador.

Recordemos que en la base de datos se tiene una única tabla (tartas) que contiene un registro de cada tarta, de ahí que el modelo se denomine en singular, y se crea en /pastelito/models/tarta.php con el siguiente código:

<?php
class Tarta extends AppModel {
var $name = 'Tarta';
}
?>

Por otro lado el controlador /pastelito/controllers/tartas_controller.php contiene:

<?php
class TartasController extends AppController {
var $name = 'Tartas';

function index() {
$this->set('tartas', $this->Tarta->findAll());
}
}
?>

que define una función que invoca a la vista tartas/index.ctp pasando como parámetro todos los registros del modelo Tarta.

Finalmente la vista debe presentar el resultado, ahora la vista será un directorio /pastelito/views/tartas, con un fichero index.ctp que genera el código HTML a mostrar por el navegador:

<h1>Tartas</h1>

<table>
<tr>
<th>Id</th>
<th>Producto</th>
<th>Precio (eur.)</th>
</tr>

<?php foreach ($tartas as $tarta): ?>
<tr>
<td><?php echo $tarta['Tarta']['id']; ?></td>
<td><?php echo $tarta['Tarta']['nombre']; ?></td>
<td><?php echo $tarta['Tarta']['precio']; ?></td>
</tr>
<?php endforeach; ?>
</table>

Se puede ver el resultado visualizando la URL http://www.onestic.dev/tartas.

listatartas

Todo bien, pero la aplicación no deja de ser muy sencilla, se va a añadir funcionalidad: al pinchar sobre el producto se ve un detalle del mismo.

Se modifica index.ctp de forma que el identificador sea un hiperenlace que nos lleve a una nueva vista:

<td><?php echo $html -> link($tarta['Tarta']['id'], "/tartas/view/".$tarta['Tarta']['id']); ?></td>

Se crea view.ctp que será la vista y que recibe como parámetro de entrada el identificador, para recuperar ese registro:

<h1><?php echo $tarta['Tarta']['nombre']?></h1>
<p><small>Precio: <?php echo $tarta['Tarta']['precio']?></small></p>
<p><?php echo $tarta['Tarta']['descripcion']?></p>

Y se añade la acción asociada a la nueva vista en el controllador con la siguiente función:

function view($id = null) {
$this->Tarta->id = $id;
$this->set('tarta', $this->Tarta->read());
}

Nótese la correspondencia de nombres, la función view lee el registro con identificador = id y la vista view.ctp muestra el resultado.

Información del elemento seleccionado.

Finalmente se edita /pastelito/config/core.php para modificar el nivel de depurado,
Configure::write('debug', 0);
y routes.php para redirigir automáticamente a la página inicial que deseemos: http://www.onestic.dev.

Router::connect('/', array('controller' => 'tartas', 'action' => 'index'));

Esta entrada fue publicada en PHP y clasificada en , , , , . Ir al permalink. Los trackbacks están cerrados pero puedes publicar un comentario.

Publicar un comentario

Tu correo nunca es compartido ni publicado. Los campos requeridos están marcados *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>