So, ich habe das Problem gelöst. Es lag wirklich an der Schriftart: Hier nochmal meine vollständige Lösung:
Mein Klasse, in der ich die Form erstelle:
PHP-Code:
class Global_ForgetPasswordForm extends Zend_Form{
function init(){
$this->setAction('')->setMethod('post');
//Passwort ändern
$email = new Zend_Form_Element_Text('email', array('label' => 'E-Mail', 'required' => true ));
$captcha = $this->createElement('captcha', 'captcha',
array('required' => true,
'captcha' =>
array('captcha' => 'Image',
'font' => '../public/fonts/arial.ttf', //Hier hatte ich eine Andere Schriftart ohne Zahlen und somit kam ein Fehler
'fontSize' => '24',
'required' => true,
'gcFreq' => 5,
'background' => 0,
'helper' => null,
'wordLen' => 5,
'height' => '50',
'width' => '150',
'imgDir' => '../public/image/captcha/',
'imgUrl' => Zend_Controller_Front::getInstance()->getBaseUrl().'/image/captcha/',
'dotNoiseLevel' => 50,
'lineNoiseLevel' => 5)));
$captcha->setLabel('Bitte tragen Sie die Zeichen zur Validierung ein');
$submit = new Zend_Form_Element_Submit('submit', array('label' => 'Passwort zurücksetzen'));
$this->addElements(array($email, $captcha, $submit));
}
}
Aufruf in einer Index Action:
PHP-Code:
....
/**
* Passwort vergessen
*/
public function forgetpasswordAction(){
$forget_password_form = new Global_ForgetPasswordForm();
$post = $this->_request->getPost();
if($this->_request->isPost()){
$forget_password_form->captcha->isValid($this->_request->getPost());//Überprüfung des Captchas
//Hier kann die Validierung für die Form ($forget_password_form) noch in der Klasse mit den Zend Validatoren geregelt werden
$captcha_error = $forget_password_form->getMessages();
if(!empty($captcha_error ["captcha"] ["badCaptcha"])){
//Diese Fehlermeldung kann man noch anders regeln, ist nur zur Veranschaulichung gewählt worden
$this->view->registerformErrorMessages['captcha'] = "Das eingegebene Captcha ist nicht korrekt. Bitte geben Sie es nochmal ein.";
}
if(empty($this->view->registerformErrorMessages)){
//Hier kann die Aktion ausgeführt werden, wenn alles richtig ist.
}else{
$forget_password_form->populate($post);
}
}
$this->view->forget_password_form = $forget_password_form;
}
....
Und hier nochmal die View:
PHP-Code:
<?php
if(!empty($this->registerformErrorMessages)){
foreach($this->registerformErrorMessages AS $error_message){
echo $error_message; ?><br />
<?php }
}
?>
<div class="maincontent">
<h3>Passwort vergessen</h3>
<p>Haben Sie ihr Passwort vergessen, dann können Sie durch die Angabe Ihrer E-Mail Adresse ihr Passwort zurücksetzen.</p>
<?php echo $this->forget_password_form; ?>
</div>
Einmal alles, für Leute, die Auch Probleme damit haben.
Und danke für die Hilfe von euch :-)
Lesezeichen