Últimos ajustes
En la última parte de nuestra serie sobre cómo crear un CRUD con Laminas, abordaremos la refactorización de las vistas. En las partes anteriores, hemos construido la estructura básica del CRUD y hemos creado la funcionalidad de creación, lectura, actualización y eliminación de registros.
Vamos a aplicar una refactorización a la vista de crear y editar una tarea.
La refactorización de las vistas implica reorganizar y limpiar el código de las plantillas para mejorar su legibilidad, claridad y modularidad. Esto puede involucrar la eliminación de código duplicado, la simplificación de la estructura de la plantilla y la mejora del rendimiento.
Al final de esta sección, tendremos vistas limpias y eficientes, lo que nos permitirá mantener nuestro proyecto de manera más fácil y rápida.
Para esto vamos a crear una nueva vista en el directorio de vistas llamado _form.phtml. Con el siguiente código:
<?php
$title = $form->get('title');
$title->setAttribute('class', 'form-control');
$title->setAttribute('placeholder', 'Título');
$description = $form->get('description');
$description->setAttribute('class', 'form-control');
$description->setAttribute('placeholder', 'Descripción');
$submit = $form->get('submit');
$submit->setAttribute('class', 'btn btn-primary');
$form->setAttribute('action', $url);
$form->prepare();
echo $this->form()->openTag($form);
?>
<div class="form-group">
<?= $this->formLabel($title) ?>
<?= $this->formElement($title) ?>
<?= $this->formElementErrors()->render($title, ['class' => 'help-block text-danger']) ?>
</div>
<div class="form-group">
<?= $this->formLabel($description) ?>
<?= $this->formElement($description) ?>
<?= $this->formElementErrors()->render($description, ['class' => 'help-block text-danger']) ?>
</div>
<?php
echo $this->formSubmit($submit);
echo $this->formHidden($form->get('id'));
echo $this->form()->closeTag();
?>
Este código es muy similar al contenido de las vistas para crear y editar una task. La idea de esta vista parcial (_form.phtml) es que pueda ser reutilizada por la vista de crear y editar una tarea.
En en la vista create.phtml vamos a eliminar el contenido actual y lo vamos a reemplazar por lo siguiente:
<?php
$title = 'Nueva tarea';
$this->headTitle($title);
?>
<h4 class="d-flex justify-content-between align-items-center mb-3 mt-3">
<span class="text-muted"><?= $title ?></span>
</h4>
<?php
$form = $this->form;
$url = $this->url('todo-app', ['action' => 'create']);
echo $this->partial('todos-app/to-do/_form', [
'form' => $form,
'url' => $url
]);
?>
Lo que ha cambiado aquí es el último bloque de código PHP, donde podemos observar que seteamos primero las variables $form
y $url
, las cuales contienen la información del formulario y la url a donde se enviaran los datos (submit) respectivamente, a continuación renderizamos la vista parcial que acabamos de crear pasándole las variables antes mencionadas.
Hacemos lo mismo para la vista edit:
<?php
$title = 'Editar tarea';
$this->headTitle($title);
?>
<h4 class="d-flex justify-content-between align-items-center mb-3 mt-3">
<span class="text-muted"><?= $title ?></span>
</h4>
<?php
$form = $this->form;
$url = $this->url('todo-app', ['action' => 'edit', 'id' => $id]);
echo $this->partial('todos-app/to-do/_form', [
'form' => $form,
'url' => $url
]);
?>
Quedando muy similar a la vista anterior, donde solo cambia la ruta para editar la tarea.
Con estas modificaciones hemos hecho una refactorización donde reutilizamos y eliminamos código duplicado ya que la vista de crear y editar una tarea son muy similares.
Es todo (ahora si) para este tutorial sobre Laminas, espero haya sido de utilidad más adelante voy a tratar de convertir este contenido a video.
A modo de resumen estas son las partes del tutorial:
Ahora si por último el repositorio del proyecto: Tutorial con laminas
Gracias por leer y llegar hasta aquí.