Monoforms

CREANDO UN CRUD CON LAMINAS ULTIMA PARTE: Refactorizar vistas


Últimos ajustes

Vamos a aplicar una refactorización a la vista de crear y editar una tarea.

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í.


...
Monoforms ©2021 Created by Pedro Rojas Reyes