Validaciones

De CidesaWiki

Saltar a navegación, buscar

Para realizar las validaciones a una forma debemos: En caso de módulos generados por el propel-init-admin: Crear una carpeta llamada validate y dentro de ella crear un archivo llamado edit.yml y para otro caso módulos generados con el init-module la carpeta validate ya viene por defecto solo debemos crear el archivo .yml debe llamarse a la accion que se va a ejecutar ejemplo edit.

Muestra.JPG


El archivo edit.yml contiene lo siguiente: methods se declara el metodo post con los campos que se van a validar al momento de guardar. names se coloca cada uno de los campos con sus mensajes(si tienen y si son requeridos o no), y llamamos el validators respectivo al campo. Y al final creamos los validators segun las validaciones que tenga que hacersele a los campos.

methods:
  post:
   - "caregart{codart}"      
   - "caregart{desart}"
   - "caregart{ramart}"
   - "caregart{unimed}"
   - "caregart{unialt}"
   - "caregart{relart}"
   - "caregart{exitot}"   
   - "caregart{cosult}"
   - "caregart{cospro}"
   - "caregart{invini}"
   
names: 
  caregart{codart}:
    required:  Yes
    required_msg: El Código del Articulo no puedo estar en Blanco
    validators: MyStringValidator6        

  caregart{desart}:
    required:  Yes
    required_msg: El Descripción no puedo estar en Blanco        
    validators: MyStringValidator
    
  caregart{ramart}:
    required:  No
    validators: MyString2Validator
  
  caregart{unimed}:
    required:  No
    validators: MyString3Validator
    
  caregart{unialt}:
    required:  No
    validators: MyString4Validator
    
  caregart{relart}:
    required:  No
    validators: MyString5Validator
    
  caregart{exitot}:
    required:  No
    validators: MyNumberValidator
    
  caregart{cosult}:
    required:  No
    validators: MyNumberValidator
    
  caregart{cospro}:
    required:  No
    validators: MyNumberValidator
    
  caregart{invini}:
    required:  No
    validators: MyNumberValidator
    
MyStringValidator:
    class: sfStringValidator
    param:
        min:       2
        min_error: La Descripción no puede tener menos de 2 caracteres
        max:       250
        max_error: La Descripción no puede pasar mas de 250 caracteres

MyStringValidator6:
    class: sfStringValidator
    param:
        min:       1
        min_error: La Descripción no puede tener menos de 2 caracteres        
        
MyString2Validator:
    class: sfStringValidator
    param:
        min:       2
        min_error: El Ramo del Articulo no puede tener menos de 2 caracteres
        max:       
        max_error: El Estatus no puede pasar mas de 6 caracteres
        
MyString3Validator:
    class: sfStringValidator
    param:
        min:       0
        min_error: La Unidad de Medida no puede tener menos de 2 caracteres
        max:       
        max_error: La Unidad de Medida no puede pasar mas de 15 caracteres

MyString4Validator:
    class: sfStringValidator
    param:
        min:       0
        min_error: La Unidad Alternativa no puede tener menos de 2 caracteres
        max:       15
        max_error: La Unidad Alternativa no puede pasar mas de 15 caracteres

MyString5Validator:
    class: sfStringValidator
    param:
        min:       0
        min_error: La Relación no puede tener menos de 2 caracteres
        max:       25 
        max_error: La Relación no puede pasar mas de 25 caracteres
                
MyNumberValidator:
    class: sfNumberValidator
    param:
        type:         float
        type_error:   Por favor, Introduzca Números Decimales               
        nan_error:    Por Favor, introduzca un Número Decimal
        min:          0000000000.00
        min_error:    El valor tiene que ser mayor que cero
        max:          9999999999.99
        max_error:    El valor debe contener maximo 9999999999.99

En este ejemplo, se encuentran algunos de los Estándares de Validación(sfNumberValidator y sfStringValidator) de symfony. Los demas se encuentra en capitulo 10 y el codigo de lo que hace en cada uno de ellos, se encuentra en la siguiente dirección C:\AppServ\php5\PEAR\symfony\validator.

Nota: Para agregar otras validaciones del Negocio crear una funcion ValidateEdit(Modulo Generados con propel-init-admin) en el Actions.class.php está se ejecutara al mismo tiempo que las otras(al Guardar) y Modificar la función handleErrorEdit.Ejemplo de página Almregart.

  private static $coderror=-1; 
       	
  public function validateEdit()
    {  	 
      if($this->getRequest()->getMethod() == sfRequest::POST)
        { 
	  $this->caregart = $this->getCaregartOrCreate();
	  $this->updateCaregartFromRequest();
	    	
	  self::$coderror=Articulos::validarAlmregart($this->caregart);
	  if (self::$coderror<>-1)
            {	    		 	
	      return false;
	    }else return true;
	 }else return true;   
    }
 
  public function handleErrorEdit()
    {
      $this->preExecute();
      $this->caregart = $this->getCaregartOrCreate();
      $this->updateCaregartFromRequest();
      $this->labels = $this->getLabels();
  
      if(!$this->validateEdit())
        {
	  $err = Herramientas::obtenerMensajeError(self::$coderror);	    
	  $this->getRequest()->setError('caregart{codart}',$err);	
        }
       return sfView::SUCCESS;	
     } 
  

Las validaciones del Actions.class.php ultilizan un manejador de errores que se encuentra creado en la carpeta config , el cual se llama errores.yml, el cual contiene los códigos de los errores.

1:
  cod: 1
  msj: Nivel Anterior No Existe
2:
  cod: 2
  msj: El Codigo no puede estar en Blanco ó No puede Contener menos de 4 Carácteres

Estos errores se ejecutan cuando la función a la cual se le asigna $coderror devuelve códigos de errores self::$coderror=Articulos::validarAlmregart($this->caregart);, esta linea de código se encuentra en la funcion validateEdit(). Si la función validateEdit() retorna false se ejecuta la función handleErrorEdit() enviando el error a la vista.

--Usuario:Desireé Martínez 16:08 26 abr 2007 (VET)

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas