I am trying to set my own custom error message onto my Captcha but for some reason it is echoing twice.
Here is my captcha code:
$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"
)));
And then to set my own error message:
$captcha->setErrorMessages(array('badCaptcha' => 'My message here'));
When the validation fails I get:
'My message here; My message here'
Why is it duplicating the error and how do I fix it?
After spending a LOT of time trying to get this to work, I've ended up setting the messages in the options of the 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'
)
)
)
);
I looked into this answer, but I didn't really like this solution, Now I have done it using an inputspecification like:
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;
}
I just noticed, this was a question for ZF1
This is the answer for ZF2
精彩评论