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:
Nótese la correspondencia de nombres, la función view lee el registro con identificador = id y la vista view.ctp muestra el resultado.
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'));
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.phpcon el siguiente código:<?phpclass Tarta extends AppModel {
var $name = 'Tarta';
}
?>
Por otro lado el controlador
/pastelito/controllers/tartas_controller.phpcontiene:<?phpclass 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 ficheroindex.ctpque 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.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.ctpque 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
viewlee el registro con identificador = id y la vistaview.ctpmuestra el resultado.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'));