martes, 27 de mayo de 2025

Validar desde el servidor la introducción de datos al editar y actualizar un registro

app\Models\ContactoModel.php (Queda igual)

<?php

namespace App\Models;

use CodeIgniter\Model;

class ContactoModel extends Model
{
    protected $table = 'contactos';
    protected $primaryKey = 'id';
    protected $allowedFields = ['nombre', 'apellidos', 'celular'];

     protected $validationRules = [
        'nombre'    => 'required|min_length[3]',
        'apellidos' => 'required|min_length[3]',
        'celular'   => 'required|numeric|min_length[7]'
    ];

    protected $validationMessages = [
        'nombre'    => ['required' => 'El nombre es obligatorio.', 'min_length' => 'Debe tener al menos 3 caracteres.'],
        'apellidos' => ['required' => 'Los apellidos son obligatorios.', 'min_length' => 'Los apellidos debe tener al menos 3 caracteres.'],
        'celular'   => ['required' => 'El celular es obligatorio.', 'numeric' => 'El celular debe contener solo números.', 'min_length' => 'El celular debe tener al menos 7 dígitos.']
    ];
}

app\Controllers\Contacto.php (Extracto)

 public function actualizar($id)
    {
        $modelo = new ContactoModel();
        $data = [
            'id' => $id, 
            'nombre' => $this->request->getPost('nombre'),
            'apellidos' => $this->request->getPost('apellidos'),
            'celular' => $this->request->getPost('celular'),
        ];


        if (!$modelo->update($id,$data)) {
        // Vuelve a mostrar el formulario con los errores y datos ingresados
        return view('contacto/editar', [
            'errors' => $modelo->errors(),
            'contacto' => $data
            ]);
        }
        return redirect()->to(MI_BASE_URL.'listar')->with('mensaje', 'Contacto actualizado exitosamente.');
    }

app\Views\contacto\editar.php

<h1>Editar Contacto</h1>

    <!-- Mostrar errores si existen -->
    <?php if (isset($errors) && !empty($errors)): ?>
        <div class="error">
            <ul>
                <?php foreach ($errors as $error): ?>
                    <li><?= esc($error) ?></li>
                <?php endforeach; ?>
            </ul>
        </div>
    <?php endif; ?>

<form action="<?= MI_BASE_URL.'actualizar/'.$contacto['id'] ?>" method="post">
    <label for="nombre">Nombre:</label>
    <input type="text" id="nombre" name="nombre" value="<?= $contacto['nombre'] ?>"><br><br>
    <label for="apellidos">Apellido:</label>
    <input type="text" id="apellidos" name="apellidos" value="<?= $contacto['apellidos'] ?>"><br><br>
    <label for="celular">Celular:</label>
    <input type="text" id="celular" name="celular" value="<?= $contacto['celular'] ?>"><br><br>
    <input type="submit" value="Actualizar">
</form>

app\Views\contacto\listar.php

<h1>Listado de Contactos</h1>

 <?php if (session()->getFlashdata('mensaje')): ?>
        <p style="color:green"><?= session()->getFlashdata('mensaje') ?></p>
    <?php endif; ?>

<table>
    <tr>
        <th>Nombre</th>
        <th>Apellido</th>
        <th>Celular</th>
        <th>Acciones</th>
    </tr>
    <?php foreach ($contactos as $contacto) : ?>
    <tr>
        <td><?= $contacto['nombre'] ?></td>
        <td><?= $contacto['apellidos'] ?></td>
        <td><?= $contacto['celular'] ?></td>
        <td>
            <a href="<?= MI_BASE_URL.'editar/'.$contacto['id'] ?>">Editar</a>
            <a href="<?= MI_BASE_URL.'eliminar/'.$contacto['id'] ?>">Eliminar</a>
        </td>
    </tr>
    <?php endforeach ?>
</table>

No hay comentarios.:

Publicar un comentario