我无法在注册表单中显示验证码元素。它以前工作,但由于某种原因,当我尝试将captcha元素添加到表单时,整个表单都不会显示。
以下是我的控制器文件中用于创建表单
的函数private function getSignupForm()
{
// create form
$form = new Zend_Form();
$form->setAction('success');
$form->setMethod('post');
$form->setAttrib('sitename', 'loudbite');
// add elements
require "form/elements.php";
$loudbiteElements = new Elements();
// create username field
$form->addElement($loudbiteElements->getUsernameTextField());
// create email field
$form->addElement($loudbiteElements->getEmailTextField());
// create password field
$form->addElement($loudbiteElements->getPasswordTextField());
// add captcha
$form->addElement($loudbiteElements->getCaptcha());
// create submit button
$form->addElement('submit', 'submit');
$submitElement = $form->getElement('submit');
$submitElement->setLabel('Create My Account!');
return $form;
}
以下是将表单传递给相应视图的操作
public function newAction()
{
// get the form
$form = $this->getSignupForm();
// add the form to the view
$this->view->form = $form;
}
如果我在我的getSignupForm()函数中注释掉该行,我将captcha添加到表单中,那么表单将显示ok减去captcha元素。这使我认为验证码构造存在问题。
以下是构建验证码的外部模型文件中的函数
public function getCaptcha()
{
$captchaElement = new Zend_Form_Element_Captcha(
'signup',
array('captcha' => array(
'captcha' => 'Figlet',
'wordLen' => 6,
'timeout' => 600))
);
$captchaElement->setLabel('Please type in the words below to continue:');
return $captchaElement;
}
所有其他表单元素都在此外部模型文件中创建。基于如果我不添加captcha元素,其他元素正确显示的事实,我认为访问模型文件不是问题。
我上次使用此注册表单时一切正常!而且我不记得在当时和现在之间改变了什么。
非常感谢任何帮助。
此致
软羊皮