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() 関数の行をコメントアウトすると、フォームはキャプチャ要素を差し引いた状態で表示されます。これにより、キャプチャの構造に問題があると思われます。

以下は、キャプチャが構築される外部モデル ファイルの関数です。

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 要素を追加しなくても、他の要素が正しく表示されるという事実に基づいて、モデル ファイルへのアクセスに問題はないと思います。

前回このサインアップ フォームを使用したときは、すべて問題なく機能していました。そして、当時と今では何も変わった覚えがありません。

どんな助けでも大歓迎です。

よろしく

ロアン

4

0 に答える 0