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