Validaciones e imprimir errores de formularios en CodeIgniter 4 con estilo de Bootstrap 5

26-10-2020 - Andrés Cruz

In english

Las validaciones son un mecanismo fundamental que nosotros empleamos para mostrar errores que ocurran en un formulario, por lo tanto, en Codeigniter 4 nosotros podemos crear rápidamente unas reglas de validación desde el framework, en un archivo de configuración del mismo y configurarlo en cualquier parte desde nuestros controladores.

Vamos a ver cómo podemos emplear las validaciones sobre nuestro formulario, para esto podemos hacerlo de dos maneras básicamente, la primera sería sobre la función que se encarga de recibir los datos que creamos anteriormente por ejemplo, la función de create, para crear un nuevo elemento, en este caso, una persona:

    public function create(){
        $movie = new MovieModel();
        if($this->validate('movies')){
            $id = $movie->insert([
                'title' =>$this->request->getPost('title'),
                'description' =>$this->request->getPost('description'),
            ]);
            return redirect()->to("/movie/$id/edit")->with('message', 'Película creada con éxito.');
        }
        return redirect()->back()->withInput();
    }

Archivos de validación

CodeIgniter a partir de la versión 4 permite crear archivos de validación, en la cual sería simplemente un array, que tenemos que implementar con las validaciones y simplemente colocamos las validaciones que queramos emplear; el archivo se encuentra en app/Config/Validation y simplemente tienes que definir tus reglas de validación:

    public $movies =[
        'title' => 'required|min_length[3]|max_length[255]',
        'description' => 'min_length[3]|max_length[5000]'
    ];

Básicamente muy similar al ejemplo anterior, pero de esta manera queda mucho más organizado, más extensible y por lo tanto más usable.

El punto aquí, es que coloques como la key del array anterior el nombre del campo seguido de las reglas que puedes ver que tipos de reglas puedes colocar en la documentación oficial.

Por lo tanto, ya tenemos un esquema que podemos emplear para trabajar con las validaciones.

Mostrar errores de validación

Los errores de validación lo tenemos que mostrar en la vista de new, para eso tenemos que cargar un servicio de validaciones desde este archivo que luego le pasamos a la vista para mostrar los mismos:

  public function new()
    {
        $validation =  \Config\Services::validation();
        return view('person/new',['validation' => $validation]);
    }

Y en la vista recibimos una colección, entiéndase un listado de errores que los podemos imprimir de la siguiente manera:

<?= $validation->listErrors() ?>

Para dar un estilo personalizado para los errores; puedes ir a el archivo de Config/Validation.php y en la variable de templates, indicar la referencia al archivo que tiene que emplear como plantilla o template para imprimir los errores; por ejemplo:

    public $templates = [
        //'list'   => 'CodeIgniter\Validation\Views\list',
        'list'   => 'App\Views\Validations\list_bootstrap',
        'single' => 'CodeIgniter\Validation\Views\single',
    ];

Crear plantilla para mostrar los errores con Bootstrap

Y creamos dicho archivo, por ejemplo, con el estilo de Bootstrap: 

<?php if (! empty($errors)) : ?>
    <div class="errors" role="alert">      
        <?php foreach ($errors as $error) : ?>
            <div class="alert alert-danger"><?= esc($error) ?></div>
        <?php endforeach ?>
    </div>
<?php endif ?>

Pero, como puedes darte cuenta, puedes personalizar el mismo al 100% e incluir por ejemplo tu estilo que tengas para otros kit CSS como Tailwind.css

Recuerda que este es parte de mi Curso y libro en CodeIgniter 4.

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz en Udemy