登録フォームにキャプチャ要素を表示するのに問題があります。以前は機能していましたが、何らかの理由でキャプチャ要素をフォームに追加しようとすると、フォーム全体が表示されません。
以下は、フォームを作成するためのコントローラーファイルの関数です
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 要素を追加しなくても、他の要素が正しく表示されるという事実に基づいて、モデル ファイルへのアクセスに問題はないと思います。
前回このサインアップ フォームを使用したときは、すべて問題なく機能していました。そして、当時と今では何も変わった覚えがありません。
どんな助けでも大歓迎です。
よろしく
ロアン