zend-framework zend-form-element

Mensaje de error personalizado para el elemento Captcha en Zend Framework 1.10



zend-framework zend-form-element (2)

Estoy tratando de establecer mi propio mensaje de error personalizado en mi Captcha, pero por alguna razón está haciendo eco dos veces.

Aquí está mi código captcha:

$captcha = new Zend_Form_Element_Captcha( ''captcha'', // This is the name of the input field array(''captcha'' => array( // First the type... ''captcha'' => ''Image'', // Length of the word... ''wordLen'' => 6, // Captcha timeout, 5 mins ''timeout'' => 300, // What font to use... ''font'' => ''images/captcha/font/arial.ttf'', // URL to the images ''imgUrl'' => ''/images/captcha'', //alt tag to keep SEO guys happy ''imgAlt'' => "Captcha Image - Please verify you''re human" )));

Y luego para configurar mi propio mensaje de error:

$captcha->setErrorMessages(array(''badCaptcha'' => ''My message here''));

Cuando la validación falla, obtengo:

''My message here; My message here''

¿Por qué se está duplicando el error y cómo lo soluciono?


Después de pasar MUCHO tiempo tratando de hacer que esto funcione, terminé configurando los mensajes en las opciones del constructor

$captcha = new Zend_Form_Element_Captcha( ''captcha'', // This is the name of the input field array( ''captcha'' => array( // First the type... ''captcha'' => ''Image'', // Length of the word... ''wordLen'' => 6, // Captcha timeout, 5 mins ''timeout'' => 300, // What font to use... ''font'' => ''images/captcha/font/arial.ttf'', // URL to the images ''imgUrl'' => ''/images/captcha'', //alt tag to keep SEO guys happy ''imgAlt'' => "Captcha Image - Please verify you''re human", //error message ''messages'' => array( ''badCaptcha'' => ''You have entered an invalid value for the captcha'' ) ) ) );


Investigué esta respuesta, pero realmente no me gustó esta solución. Ahora lo he hecho usando una especificación de entrada como:

public function getInputSpecification() { $spec = parent::getInputSpecification(); if (isset($spec[''validators'']) && $spec[''validators''][0] instanceof ReCaptcha) { /** @var ReCaptcha $validator */ $validator = $spec[''validators''][0]; $validator->setMessages(array( ReCaptcha::MISSING_VALUE => ''Missing captcha fields'', ReCaptcha::ERR_CAPTCHA => ''Failed to validate captcha'', ReCaptcha::BAD_CAPTCHA => ''Failed to validate captcha'', //this is my custom error message )); } return $spec; }

Me di cuenta de que esta era una pregunta para ZF1

Esta es la respuesta para ZF2