In allen Beispielen, die ich von Zend_Form finde, entspricht die Ansicht des Formulars der Aktion, in der es verarbeitet wird. Ich möchte jedoch eine Ansicht, die mehrere unabhängige Formulare und separate Aktionen zum Verarbeiten jedes Formulars anzeigt (dessen Ansicht nicht verwendet wird).Zeige Password Validierungsfehler eines Zend Formulars auf einer anderen Aktion
Umleiten zu einzelnen Aktionen ist kein Problem, die Formulare werden dort verarbeitet, aber wenn Validierungsfehler angezeigt werden, möchte ich, dass sie in der allgemeinen Ansicht neben jedem Element angezeigt werden, Zend_Form Stil. Wenn ein Formular ausgefüllt wird (mit ungültigen Daten), werden Fehler automatisch angezeigt. Wenn ein Formular ungültig ist, verwende ich FlashMessenger, um den ungültigen Inhalt zu speichern, um dann zu der allgemeinen Hauptaktion umzuleiten und das Formular mit ihm zu füllen.
Das Problem tritt bei den Passwortfeldern auf. Diese weigern sich natürlich, ausgefüllt zu werden, und zeigen daher keine Fehlermeldung an. Kann ich es anzeigen, ohne manuell herausfinden zu müssen, welcher Fehler aufgetreten ist?
Vielen Dank für Ihre Aufmerksamkeit und Ihre Geduld mit meinem Englisch: P
PS: Zum besseren Verständnis ich einen Beispielcode anhängen zu erklären, was ich tun ...
class TestController extends Zend_Controller_Action
{
...
public function commonAction() {
/*Initialize form objects*/
$form1 = new Application_Form_Form1();
...
$formN = new Application_Form_FormN();
/*Fill forms if needed*/
$flashMess = $this->_helper->FlashMessenger;
if ($flashMess->hasMessages()) {
$messages = $flashMess->getMessages();
switch ($messages[1]) {
case 'form1':
$form1->populate($messages[0]);
break;
...
case 'formN':
$fotmN->populate($messages[0]);
break;
default:
...
break;
}
}
/*Assign to the view*/
$this->view->form1 = $form1;
...
$this->view->formN = $formN;
}
public function form1Action() {
if ($this->getRequest()->isPost()) {
$form1 = new Application_Form_Form1();
$data = $this->getRequest()->getPost();
if ($form1->isValid($data)) {
...
} else {
$this->_helper->FlashMessenger($data);
$this->_helper->FlashMessenger('form1');
}
}
$this->redirect('/test/common');
}
...
}
Das Problem wird gelöst, einfach den Aufruf zu "populate" mit einem zu "isValid" mit natürlich dem gleichen Argument zu ersetzen. Jetzt erscheinen Fehlermeldungen wie erwartet. Ich möchte die Felder nicht wirklich mit dem Passwort füllen, weil ich denke (fühle mich, tatsächlich), es ist nicht sicher, ich möchte nur Validierungsfehlermeldungen anzeigen. Vielen Dank! – davidgnin