質問: FuelPHPのFieldsetクラスを使って入力フォームを作成しています。 商品情報(Model_Item)と詳細情報(Model_Detail)というテーブルがあり詳細情報テーブルは複数レコード存在します。 `$Fieldset->add_model()`でフィールドを追加しているのですが、詳細情報テーブルの2レコード目以降のフィールドはどうしたらいいのでしょうか? 当然そのままモデルを追加するとフィールド名が重複してエラーになります。 フィールド名を一意するために例えばフィールド名の最後に一律で任意の文字("_連番"など)を付けることはできないでしょうか? どこにでもあるベタな処理ですが、皆様どうされていますか? よろしくお願い致します。
回答: とりあえずこういうやり方でやってみました。 Model側に登録したproperiesを使いたかったので自前のadd_model(みたいなもの)を作りました。 この処理で通常のadd_modelと同じ結果になるかどうかは定かではありませんが、引数の$prefixを設定すれば複数回Modelを追加できるので一応やりたいことはできています。 ``` static function add_model(&$fieldset,$model,$prefix = ''){ foreach($model->properties() as $key => $p){ if(isset($p['skip'])){ continue; } if($key === 'id'){ continue; } $fieldset->add($key.$prefix, isset($p['label'])?$p['label']:'',isset($p['form'])?$p['form']:array() ); if(isset($p['validation'])){ foreach($p['validation'] as $v){ if(isset($v[0])&&isset($v[1])){ $fieldset->field($key.$prefix)->add_rule($v[0],$v[1]); } } } } } ```