我使用以下代码生成CAPTCHA:
$captcha = $this->createElement('captcha', 'captcha',
array('required' => true,
'captcha' => array('captcha' => 'Image',
'font' => 'resource/fonts/arial.ttf',
'fontSize' => '24',
'wordLen' => '5',
'height' => '50',
'width' => '150',
'imgDir' => 'resource/captcha',
'imgUrl' => 'resource/captcha',
'gcFreq'=>'10',
'dotNoiseLevel' => '10',
'lineNoiseLevel' => '2')));
$captcha->setLabel('Captcha');
生成以下代码:
<label for="captcha-input" class="login_label required">Captcha</label>
<img width="150" height="50" alt="" src="captcha/eb3a592c8b1c7a71b0c7ce5179422be2.png" />
<input type="hidden" name="captcha[id]" value="eb3a592c8b1c7a71b0c7ce5179422be2" id="captcha-id">
<input type="text" name="captcha[input]" id="captcha-input" value="">
<input type="text" name="captcha" id="captcha" value="eb3a592c8b1c7a71b0c7ce5179422be2">
有人可以指导我如何删除额外的输入文本字段,如
<input type="text" name="captcha" id="captcha" value="eb3a592c8b1c7a71b0c7ce5179422be2">
提前致谢
答案 0 :(得分:3)
执行
非常重要$this->getElement('captcha')->removeDecorator("viewhelper");
之后你启用了ElementsDecorators(它首先设置了ViewHelper - 不要删除它,无论如何都需要它)
对我来说,它看起来像这样:
$this->setElementDecorators(array(
'ViewHelper',
'Errors',
array(array('data' => 'HtmlTag'), array('tag' => 'td')),
array('Label', array('tag' => 'td')),
array(array('row' => 'HtmlTag'), array('tag' => 'tr'))
));
$this->getElement('captcha')->removeDecorator("viewhelper");
答案 1 :(得分:0)
这种输入不是“额外的” - 这是必不可少的。
验证CAPTCHA时,该字段的值用于查找CAPTCHA的正确解决方案,然后将其与用户的输入进行比较。
如果没有该字段,您的CAPTCHA将会中断。
为什么要首先删除它?
答案 2 :(得分:0)
你可以试试这个:
$this->getElement('captcha')->removeDecorator("viewhelper");
答案 3 :(得分:0)
我遇到了同样的问题。删除“ViewHelper”装饰器,验证码将正确呈现。