Zend_Formのすべての例で見つかったフォームを表示するビューは、そのアクションが処理されるアクションに対応しています。しかし、私は、複数の独立したフォームを表示し、それぞれのフォームを処理する別々のアクション(ビューは使用されていない)が必要です。Zend Formのパスワード検証エラーを他のアクションに表示
個々のアクションにリダイレクトするのは問題ありません。フォームはそこで処理されますが、検証エラーが表示されたら、各アイテムの横にある共通のビューZend_Formスタイルで表示します。私が理解するように、フォームにデータが入力されると(無効なデータで)、エラーが自動的に表示されます。その後、フォームが無効な場合は、FlashMessengerを使用して無効なコンテンツを保存し、主な共通アクションにリダイレクトしてフォームを入力します。
問題は、パスワードフィールドで発生します。これらはもちろん、実装されることを拒否し、したがってエラーメッセージを表示しません。どのエラーが発生したかを手動で把握することなく表示できますか? P
PS:
はあなたの注意と私の英語とあなたの忍耐をありがとうより良く理解するために、私は私は何をすべきかを説明するサンプルコードを追加...私は理解したよう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');
}
...
}
問題は、 'populate'への呼び出しを 'isValid'に置き換えて、もちろん同じ引数で置き換えるだけで解決されます。今すぐエラーメッセージが期待どおりに表示されます。実際には安全ではないと感じているため、フィールドにパスワードを入力する必要はありません。検証エラーメッセージを表示するだけです。 ありがとうございます! – davidgnin