我需要使用Zend Captcha并编写以下代码:
<?php
require_once ('Zend/Form.php');
class Form_Signup extends Zend_Form {
public function __construct( $options = null ) {
parent::__construct( $options );
// Set method
$this->setMethod('post');
// Elements array
$elements = array();
$element = new Zend_Form_Element_Captcha('captcha', array('label' => "",
'captcha' => array('captcha' => 'Image',
'name' => 'myCaptcha',
'wordLen' => 5,
'timeout' => 300,
'font' => 'font/monofont.ttf',
'imgDir' => 'captcha/',
'imgUrl' => '/captcha/')
)
);
$elements[] = $element;
// Submit Button
$element = $this->CreateElement('submit', 'Signup');
$element->setLabel('Signup');
$elements[] = $element;
// --------------------------
// Add elements to the form
// --------------------------
// update tabindex
foreach ($elements as $index => $element) {
$element->setAttrib('tabindex', ($index + 1));
}
$this->addElements($elements);
$this->setElementDecorators(array('ViewHelper'));
// Set form decorator (what script will render the form)
$this->setDecorators(array(array('ViewScript' , array('viewScript' => 'signup/form.phtml'))));
}
}
?>
我遇到的问题是,当我在“form.phtml”文件中显示它时,如:
<?= $this->element->captcha ?>
显示以下内容:
即。它显示2个文本框。
请帮助我抵制这种情况。 :)
答案 0 :(得分:5)
您正在获取第二个文本字段,因为您正在使用用于验证码元素的ViewHelper装饰器。不要为captcha元素设置ViewHelper装饰器,它应该可以工作。
答案 1 :(得分:0)
嗨,我正在使用此代码删除额外的字段
$captcha = new Zend_Form_Element_Captcha('captcha',array('label' => 'Write the chars to the field',
'captcha' => array(
'captcha' => 'Image',
'wordLen' => 3,
'timeout' => 300,
'font' => APPLICATION_PATH.'/../public/font/two.ttf',
'imgDir' => APPLICATION_PATH.'/../public/captcha/',
'imgUrl' => 'http://localhost/projx/public/captcha/'
),
'decorators' => $this->elementDecorators,
));
$captcha->removeDecorator('ViewHelper');
这是我的装饰者
'decorators' => $this->elementDecorators,
这是默认装饰
我只是使用关注代码删除ViewHelpre
$captcha->removeDecorator('ViewHelper');
我希望这对你有用...... :)