CodeIgniter で Web サイトを開発しています。いくつかの巨大なフォーム (150 フィールド) があり、動的に作成/ロック/事前定義/削除されていることを除けば、一種の基本的なものです。
フォームとデータベースの間の移行に問題がありますが、これはもちろん非常に複雑です。つまり、フォームを送信すると、一部のテーブルに複数の行が挿入され、一部のデータは保存されません。(いくつかのラジオボタンなど..)
$_POST
以下を使用してデータを入力するために、フォーム入力名にちなんで名付けられたできるだけ多くのプロパティを持つ非常に大きなオブジェクトを作成しました。
foreach ($largeObj as $key=>$value)
{
if (isset($_POST[$key])){
$largeObj[$key]=$value; //mind the data escaping
}
}
もちろん、これは入力の半分でしか機能しません。他の入力については、次のようにする必要があります。
$largeObj['tanks']=Array();
for ($i=0;$i<$_POST['nbrTanks'];$i++){
$tank=new Tank();
// some if's in order to set some properties
$largeObj['tanks'][]=$tank;
}
次に、すべての計算を行い、対応するデータを各テーブルに挿入するように DTO を準備します。ところで、PHPDAO を使用してデータベース テーブルをマップしました。これは、CRUD 操作全体を記述するには大きすぎるためです。
より良いアプローチはありますか?DB からのデータをフォーム全体に入力する必要があるため、アノテーション駆動型またはより効率的な方法です。どんな提案でも大歓迎です。