Foros del Web » Programando para Internet » PHP » Zend »

Validator en Zend_Form

Estas en el tema de Validator en Zend_Form en el foro de Zend en Foros del Web. Hola a todos, bueno mi consulta es la siguiente encontre un ejemplo donde extiende la clase Zend_Validate_Abstract con el fin de personalizar un Float @import ...
  #1 (permalink)  
Antiguo 09/03/2011, 22:30
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 15 años, 5 meses
Puntos: 7
Validator en Zend_Form

Hola a todos, bueno mi consulta es la siguiente
encontre un ejemplo donde extiende la clase Zend_Validate_Abstract con el fin de personalizar un Float

Código PHP:
Ver original
  1. class MyValid_Float extends Zend_Validate_Abstract
  2. {
  3.     const FLOAT = 'float';
  4.  
  5.     protected $_messageTemplates = array(
  6.         self::FLOAT => "'%value%' no es un valor de punto flotante"
  7.     );
  8.  
  9.     public function isValid($value)
  10.     {
  11.         $this->_setValue($value);
  12.  
  13.         if (!is_float($value)) {
  14.             $this->_error();
  15.             return false;
  16.         }
  17.  
  18.         return true;
  19.     }
  20. }

Mi pregunta es donde guardo esta clase extendida y como lo uso en mi Zend_Form para un campo numerico (Hice diferentes pruebas y no me funcionó)

Código PHP:
Ver original
  1. $stock = $this->createElement('text','stock');
  2.           $stock->setLabel('Stock')
  3.                     ->setAttrib('size',30)
  4.                     ->setRequired(true)
  5.                     ->addValidator(' que hago aqui??');

MUCHAS GRACIAS DE ANTEMANO
  #2 (permalink)  
Antiguo 09/03/2011, 22:56
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Validator en Zend_Form

Podrías colocarla en el directorio de Models y llamarlo en addValidator, algo así
Código PHP:
Ver original
  1. // Application/Models/MyValidFloat.php
  2. <?php
  3. class Application_Model_MyValidFloat extends Zend_Validate_Abstract
  4. {
  5.     const FLOAT_NUMBER = 'float';
  6.  
  7.     protected $_messageTemplates = array(
  8.         self::FLOAT_NUMBER => "'%value%' is not a floating point value"
  9.     );
  10.  
  11.     public function isValid($value)
  12.     {
  13.         $this->_setValue($value);
  14.  
  15.         if (!is_float($value)) {
  16.             $this->_error(self::FLOAT_NUMBER);
  17.             return false;
  18.         }
  19.  
  20.         return true;
  21.     }
  22. }
Código PHP:
Ver original
  1. //.....
  2. ->addValidator(new Application_Model_MyValidFloat);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 09/03/2011, 23:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Validator en Zend_Form

Lo mejor es que eso vaya en la carpeta library/ y que la agregues como indica amibalerc o en su caso agregar el path a tus validadores para que lo reconozca.

Saludos.
  #4 (permalink)  
Antiguo 09/03/2011, 23:19
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: Validator en Zend_Form

Ok funciono bien gracias Abimaelrc y Gatorv


Saludos
  #5 (permalink)  
Antiguo 09/03/2011, 23:29
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: Validator en Zend_Form

Uy me olvidaba, tambien tengo un problema con el formato aquin usamos 2,300.5 (por ejemplo)
y el servidor esta configurado tal como lo menciono
Pero el validator me acepta en otro formato

Como configuro para que me acepte el formato del ejemplo

Busque sobre el setLocale('es_PE') pero nada

Gracias nuevamente de antemano
  #6 (permalink)  
Antiguo 10/03/2011, 02:24
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Validator en Zend_Form

Que tal alfcm,

Hay alguna razón por la cual Zend_Validate_Float no te sirva ?, en cualquier caso tu validator debería tener soporte para locale y seguir la convención de nombres de Zend, osea estar bajo My/Validate, el fichero llamarse Float.php y la clase My_Validate_Float.
Para utilizarlo yo prefiero agregar el prefix http://framework.zend.com/manual/en/...ements.loaders.
Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Última edición por masterpuppet; 10/03/2011 a las 02:44 Razón: Agregado prefix
  #7 (permalink)  
Antiguo 10/03/2011, 07:38
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: Validator en Zend_Form

Hola masterpuppet y nuevamente felicitandote por el ascenso (Colaborador)

Mi proposito era cambiar el mensaje de error que te muestra la clase Float, y encontre un ejemplo el cual ya lo solucione gracias a abimaelrc y gatorv, queria ahora cambiar el formato por ejemplo 2,400.8, pero el Zend esta configurado de la manera 2.400,8.

Estoy recien viendo esto de los Zend_Form, tengo muchas mas preguntas sobre esto pero de a pocos estoy resolviendo mis dudas.

Gracias de Antemano
  #8 (permalink)  
Antiguo 10/03/2011, 08:16
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Validator en Zend_Form

Muchas gracias alfcm,

Cuando decis cambiar mensaje, a que te referis exactamente ?, a cambiar el mensaje per se o a traducir ?, si es lo primero, lo mas simple es que tu clase extienda directamente de Zend_Validate_Float y sobreesecribia la propiedad $_messagesTemplates.

Agregado:

estuve mirando, porque extender una clase para esto, no es lo mas apropiado y en teoria podrias hacer algo asi(no lo he probado):

Código PHP:
Ver original
  1. $element->addValidator(
  2.     'float',
  3.     false,
  4.     array(
  5.         'messages' => array(
  6.             'notFloat' => "'%value%' no es un valor de punto flotante"
  7.         )
  8.     )
  9. );

Y con respeto al formato de lo números, deberias configurar el locale, te dejo el link al resourece correspondiente.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Última edición por masterpuppet; 10/03/2011 a las 08:52
  #9 (permalink)  
Antiguo 10/03/2011, 21:55
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: Validator en Zend_Form

Lo maximo masterpuppet, como siempre dando la solución precisa, mil gracias

Etiquetas: frameworks-y-php-orientado-a-objetos, zend-form, validador
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:11.