Crear modelo de formulario en Yii

Los formularios en Yii se definen en un modelo de formulario, en el que indicamos los campos del formulario y las reglas de validación de este, posteriormente en la vista imprimimos el formulario. Esto esta muy bien ya que de forma automática nos valida y nos repobla los formularios sin mucho esfuerzo.

Lo que diferencia a Yii de otros frameworks en este sentido no es que su componente de validación sea mas potente (el de ZF2 es superior), sino que tenemos la posibilidad de automatizar la validación en el lado del cliente (con jQuery) y en el del servidor, lo cual es espectacular.

Crear modelo de formulario

Las clases o modelos de formulario se crean en el directorio protected/model y los ficheros se tienen que llamar NombreDelFormularioForm.php

Ejemplo:

protected/model/UsuariosForm.php

<?php
class UsuariosForm extends CFormModel{
    //Campos que tendrá el formulario
    public $nombre;
    public $apellido;
    public $password;
    public $email;
 
    //Reglas de validación
    public function rules(){
        return array(
            //Estos campos serán obligatorios
            array('nombre, email, password,apellido', 
				  'required', 
				  "message"=>"Este campo es obligatorio"),
            
            //Validando el nombre con una expresión regular
            array(
              "nombre, apellido",
              "match",
              "pattern" => "/^[a-zA-Z ñÑáéíóúüç]*$/",
              "message"=>"El nombre solo puede estar formado por letras"
            ),
            
            //Aplicamos la validación de emails
            array('email', 'email','message'=>"El email es incorrecto"),
            
            //Especificamos una longuitud a la contraseña
            array('password', 'length',
                  "min"=>8,
                  'tooShort'=>"La contraseña debe tener como mínimo 8 letras"),

        );
    }
}
?>

El controlador:

public function actionUsuarios(){

		//Creamos el objeto del formulario
	$model=new UsuariosForm();

		//Si el formulario es enviado
	if(isset($_POST['UsuariosForm'])){
		
		//Repoblamos el formulario
		$model->attributes=$_POST['UsuariosForm'];
		
		//Validamos el formulario y cargamos una vista distinta en cada caso
		if($model->validate()){
			
			$this->render('recibir_form',array(
					"datos"=>$_POST["UsuariosForm"],
				));
		}else{
			$this->render('usuarios',array(
					"formulario"=>$model
				));
		}
	}else{
	
	$this->render('usuarios',array(
					"formulario"=>$model
				));
	}
}
Víctor Robles WEB

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post