1

我无法在注册表单中显示验证码元素。它以前可以工作,但现在由于某种原因,当我尝试将验证码元素添加到表单时,整个表单都不会显示。

下面是我的控制器文件中创建表单的函数

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;
}

所有其他表单元素都在这个外部模型文件中创建。基于如果我不添加验证码元素其他元素正确显示的事实,我认为访问模型文件没有问题。

我上次使用此注册表单时一切正常!而且我不记得从那时到现在有什么改变。

任何帮助是极大的赞赏。

问候

罗恩

4

0 回答 0