1

我正在使用以下代码生成验证码:

$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">

提前致谢

4

4 回答 4

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");
于 2012-07-05T13:52:32.130 回答
0

该输入不是“额外的”——它是必不可少的。

验证 CAPTCHA 后,该字段的值用于查找 CAPTCHA 的正确解决方案,然后将其与用户的输入进行比较。

如果没有该字段,您的 CAPTCHA 将中断。

你为什么要首先删除它?

于 2011-07-23T10:16:28.997 回答
0

你可以试试这个:

$this->getElement('captcha')->removeDecorator("viewhelper");
于 2011-10-31T16:34:21.950 回答
0

我有同样的问题。删除“ViewHelper”装饰器,验证码将正确呈现。

于 2011-11-15T14:51:02.587 回答