Zend Framework 1.12を使用して、複数のフォームを含むページを作成しています。単一のマスターフォームとサブフォームを使用します。したがって、検証コードの部分は1つだけです。これらのサブフォームは、データベース内のさまざまなテーブルを指します。そのフォームに関する行がデータベースにある場合、フォームはデフォルトでデータベースから値を取得し、ユーザーがそのデータを変更できるようにすることを目的としています。また、データベースに行がない場合は、このフォームの入力がdbに挿入されます。最初に、dbから値を取得し、それらをフォーム要素の値として表示できます。しかし、私がそれを変更して、
$form->getValues();
ページに入力(または編集)された値にアクセスできません。デフォルトでフォームに入力されたデータベースの値に再度アクセスします。このフォームは常に編集できるはずです。また、さまざまな種類のデータ用に複数のフォームがあり、同じことを実行します。私は何を間違っている必要がありますか?何か案が?
(追加)ここに私のコントローラーコードの関連部分の要約があります:
$masterform = new Application_Form_GeneralForm(); // a class which extends Zend_Form
$form1 = new Application_Form_SmallForm(); // a class which extends Zend_Form_Subform
$masterform->addSubform($form1, 'form1');
// so far, for form 1, no problem. My second form will be
// added to the masterform after this first form is submitted,
// which works fine.
$form2 = new Application_Form_AnotherSmallForm(); // a class which extends Zend_Form_Subform
$request = $this->getRequest();
if ($request->isPost()){
if ($generalform->isValid($request->getPost())) {
$form2->loadValues(); // the part that form elements are filled with data
// taken from db, a method defined in `AnotherSmallForm`
// class. Just assigning values to elements with `setValue()`
$form2->saveValues(); // Here is the problem, another method to save the
// current values to db. (defined in form class). I have to do this in this fragment of code, so i don't know to
// use which order ( saveValues() and loadValues() methods' order )`
$masterform->addSubform($form2, 'form2');
}
}
したがって、最初のステップ:$form1が$masterformに追加されます。
2番目のステップ:$ masterformが送信され(現在は$ form1のみが含まれています)、$form2が$masterformに追加されます。追加される前に、$form2の値がフォーム要素内にロードされます。
3番目のステップ:$ masterformが送信されました($form1と$form2も同様です)。$ form2の値に変更があった場合は、この送信によってdbで更新する必要があります。
これがこのコードの目標ですが、3番目のステップのために達成できませんでした。