添加Zend_Form_Element_Captcha以形成导致表单不显示

时间:2012-09-26 02:35:23

标签: zend-framework

我无法在注册表单中显示验证码元素。它以前工作,但由于某种原因,当我尝试将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元素,其他元素正确显示的事实,我认为访问模型文件不是问题。

我上次使用此注册表单时一切正常!而且我不记得在当时和现在之间改变了什么。

非常感谢任何帮助。

此致

软羊皮

0 个答案:

没有答案