我无法在注册表单中显示验证码元素。它以前可以工作,但现在由于某种原因,当我尝试将验证码元素添加到表单时,整个表单都不会显示。
下面是我的控制器文件中创建表单的函数
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() 函数中注释掉我将验证码添加到表单的行,那么表单将显示 ok 减去验证码元素。这使我假设验证码构造存在问题。
以下是构建验证码的外部模型文件中的函数
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;
}
所有其他表单元素都在这个外部模型文件中创建。基于如果我不添加验证码元素其他元素正确显示的事实,我认为访问模型文件没有问题。
我上次使用此注册表单时一切正常!而且我不记得从那时到现在有什么改变。
任何帮助是极大的赞赏。
问候
罗恩