domingo, 25 de mayo de 2025

Validar desde el servidor la introducción de datos al crear un nuevo registro

app\Models\ContactoModel.php

<?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 guardar()
    {
        $modelo = new ContactoModel();
        $data = [
            'nombre' => $this->request->getPost('nombre'),
            'apellidos' => $this->request->getPost('apellidos'),
            'celular' => $this->request->getPost('celular'),
        ];

        if (!$modelo->insert($data)) {
                return view('contacto/crear', [
                    'errors' => $modelo->errors(),
                    'old' => $data
                ]);
            }

        return redirect()->to(MI_BASE_URL.'crear')->with('mensaje', 'Contacto agregado correctamente.');
    }

app\Views\contacto\crear.php

<h1>Crear Contacto</h1>


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

    <?php if (isset($errors)): ?>
        <ul style="color:red">
            <?php foreach ($errors as $error): ?>
                <li><?= esc($error) ?></li>
            <?php endforeach; ?>
        </ul>
    <?php endif; ?>

    
<form action="<?= MI_BASE_URL.'guardar' ?>" method="post">
    <label for="nombre">Nombre:</label>
    <input type="text" id="nombre" name="nombre"><br><br>
    <label for="apellidos">Apellido:</label>
    <input type="text" id="apellidos" name="apellidos"><br><br>
    <label for="celular">Celular:</label>
    <input type="text" id="celular" name="celular"><br><br>
    <input type="submit" value="Crear">
</form>

No hay comentarios.:

Publicar un comentario