Validar formularios con Codeigniter es muy sencillo.
Voy a crear un formulario simple, sin interacción con la base de datos, solamente para ver como se valida un formulario.
views/formulario_view.php
<!DOCTYPE HTML> <html lang="es"> <head> <meta charset="UTF-8"/> <title>Validar formularios con Codeigniter</title> </head> <body> <!--Creamos un formulario que nos lleve al controlador formulario_controller/recibirFormulario--> <form action="<?=base_url("formulario_controller/recibirFormulario")?>" method="post"> <input type="text" name="nombre"/> <input type="email" name="email"/> <input type="password" name="password"/> <input type="submit" name="submit" value="Enviar"/> </form> <h2><?php if(isset($mensaje)) echo $mensaje; ?></h2> <?=validation_errors();?><!--mostrar los errores de validación--> </body> </html>
controllers/formulario_controller.php
<?php class formulario_controller extends CI_Controller{ public function __construct() { parent::__construct(); //Cargamos la librería de validación (todos las librerias, helpers, etc pueden ser cargados en los controladores o auto cargarlos indicándolo en los ficheros de configuración) $this->load->library('form_validation'); $this->load->helper("url"); //Cargamos el helper de url imprescindible para usar la función base_url } public function index(){ $this->load->view("formulario_view"); } public function recibirFormulario(){ if($this->input->post("submit")){ //Validaciones //name del campo, titulo, restricciones $this->form_validation->set_rules('nombre', 'Nombre', 'required|min_length[3]|alpha|trim'); $this->form_validation->set_rules('email', 'Email', 'required|min_length[3]|valid_email|trim'); $this->form_validation->set_rules('password', 'Contraseña', 'required|min_length[3]'); //Mensajes // %s es el nombre del campo que ha fallado $this->form_validation->set_message('required','El campo %s es obligatorio'); $this->form_validation->set_message('alpha','El campo %s debe estar compuesto solo por letras'); $this->form_validation->set_message('min_length[3]','El campo %s debe tener mas de 3 caracteres'); $this->form_validation->set_message('valid_email','El campo %s debe ser un email correcto'); if($this->form_validation->run()!=false){ //Si la validación es correcta $datos["mensaje"]="Validación correcta"; }else{ $datos["mensaje"]="Validación incorrecta"; } $this->load->view("formulario_view",$datos); } } } ?>