Form does not return validation messages using CodeIgniter 4

Viewed 11

In my HunterModel.php file all the validations and custom messages are from the validations, but I don't know if my form_create.php doesn't show the error messages, they simply return to the form without shows the failures committed by the user, why is this happening?

  • form_create.php

    <?php if (isset($validation)) : ?>
      <div class="text-danger">
        <?= $validation->listErrors() ?>
      </div>
    <?php endif; ?>
    <form action="<?= site_url('create')?>" method="POST">
                ...
    </form>

In my HunterController.php method createHunter() must do the record insertion operation, checking if everything is right or returns to the form showing the necessary corrections to the user.

  • HunterController.php

    public function createHunter()
    {
        try {
            helper(['form']);
            $hunter = new HunterModel();
            $data = [
                'name_hunter' => $this->request->getPost('name_hunter'),
                'age_hunter' => $this->request->getPost('age_hunter'),
                'height_hunter' => $this->request->getPost('height_hunter'),
                'weight_hunter' => $this->request->getPost('weight_hunter'),
                'type_hunter' => $this->request->getPost('type_hunter'),
                'type_nen' => $this->request->getPost('type_nen'),
                'type_blood' => $this->request->getPost('type_blood')
            ];
            if ($hunter->insert($data)){
                return $this->response->redirect(site_url('listing'));       
            } else {
                $data['validation'] = $this->validator;
                echo view('form_create', $data);
            }    
        } catch (\Exception $e) {
            exit($e->getMessage());
        }
    }

  • HunterModel.php

        // Validation
        protected $validationRules      = [
            'nome_hunter' => 'required|max_length[30]',
            'idade_hunter' => 'required|integer',
            'altura_hunter' => 'required|decimal',
            'peso_hunter' => 'required|decimal',
            'tipo_hunter' => 'required|max_length[30]',
            'tipo_nen' => 'required|max_length[30]',
            'tipo_sanguineo' => 'required|max_length[3]'
        ];
        protected $validationMessages   = [
            'nome_hunter' => [
                'required' => 'O nome do Hunter não pode ficar vazio.',
                'max_length' => 'O nome do Hunter precisa ter no máximo 30 caracteres.'
            ],
            'idade_hunter' => [
                'required' => 'A idade do Hunter não pode ficar vazia.',
                'integer' => 'A idade do Hunter precisa ser um número inteiro.'
            ],
            'peso_hunter' => [
                'required' => 'O peso do Hunter não pode ficar vazio.',
                'decimal' => 'O peso do Hunter precisa ser um número decimal.'
            ],
            'altura_hunter' => [
                'required' => 'A altura do Hunter não pode ficar vazia.',
                'decimal' => 'A altura do Hunter precisa ser um número decimal.'
            ],
            'tipo_hunter' => [
                'required' => 'É necessário definir o tipo de Hunter.',
                'max_length' => 'O tipo de Hunter precisa ter no máximo 30 caracteres.'
            ],
            'tipo_nen' => [
                'required' => 'É necessário definir o nen do Hunter.',
                'max_length' => 'O nen do Hunter precisa ter no máximo 30 caracteres.'
            ],
            'tipo_sanguineo' => [
                'required' => 'É necessário definir o tipo sanguíneo do Hunter.',
                'max_length' => 'O tipo sanguíneo do Hunter precisa ter no máximo 3 caracteres.'
            ]
        ];

0 Answers
Related