Ver Mensaje Individual
  #6 (permalink)  
Antiguo 22/04/2011, 21:44
Avatar de abimaelrc
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: Zend_Validate_Callback

Gracias GatorV. Lo traté y no me salio. Lo que hice fue
/reports/models/ExtraValidate.php
Código PHP:
Ver original
  1. <?php
  2. class Reports_Model_ExtraValidate extends Zend_Validate_Abstract
  3. {
  4.     const REQUIRED = 'required';
  5.  
  6.     protected $_messageTemplates = array(
  7.         self::REQUIRED => 'Valor no puede estar vacio'
  8.     );
  9.  
  10.     public function isValid($value, $context = null)
  11.     {
  12.         if (is_array($context)) {
  13.             if (isset($context['foo']) && empty($context['foo'])) {
  14.                 $this->_error(self::REQUIRED);
  15.                 return false;
  16.             }
  17.         }
  18.         return true;
  19.     }
  20. }
En el formulario hice esto
Código PHP:
Ver original
  1. // create select input for foo
  2.         $foo = new Zend_Form_Element_Select('foo');
  3.         $foo->setLabel('Foo:')
  4.             ->setDecorators(
  5.                 array(
  6.                     'Errors',
  7.                     'ViewHelper',
  8.                     array('HtmlTag', array('tag'=>'div')),
  9.                     array('Label', array('tag'=>'div')),
  10.                 )
  11.             )
  12.             ->addValidator(new Reports_Model_ExtraValidate())
  13.             ->setOptions(array('tabindex'=>$n++));
  14.         $fooArray = array(
  15.             ''=>'[Selecciona uno]',
  16.             'Foo' => array(
  17.                 1=>'Foo',
  18.                 2=>'Bar'
  19.             ),
  20.             'Baz' => array(
  21.                 3=>'Baz',
  22.                 4=>'Candy',
  23.                 5=>'Fruits'
  24.             ),
  25.         );
  26.         $foo->addMultiOptions($fooArray);

En el controller solo tengo
Código PHP:
Ver original
  1. public function indexAction()
  2. {
  3.     $form = new Reports_Form_Foo;
  4.     $form->setAction('/reports/foo/index');
  5.     $this->view->form = $form;
  6.     if($this->getRequest()->isPost()){
  7.         if($form->isValid($this->getRequest()->getPost())){
  8.             $form = $form->getValues();
  9.             .......
  10.         }
  11.     }
  12. }
Le trate de colocar a ver si reconocía el validator y no lo hace, le coloqué un exit al principio de isValid
Código PHP:
Ver original
  1. public function isValid($value, $context = null)
  2.     {
  3.         exit;
  4. ...............
Y no se detuvo. ¿Me falta algo más? No me da error y siempre pasa la validación.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos