複数の電話番号を持つ「介護者」をデータベースに追加するコードネイターを使用してアプリケーションを構築しています。 UIの側面からは、各電話欄の横に追加ボタンがあり、ユーザーが別の番号を入力するためには、javascriptの魔法を使用して複製します。フォームが提出されると、電話番号は配列として提出されます。 介護者とcarer_telephone: バリデーション(Codeigniter/DataMapper)を使用して複数の新しいリレーションを保存する
は、私は2つのモデルを設定しています。各モデルにはそれぞれ独自のテーブルがあります。私はdatamapperに保存する前にすべての関係を検証できるように、自分の脳を詰めています。たとえば、現時点では、carerフィールドの検証エラーのみが表示され、carer_telephoneフィールドの検証エラーは表示されません。
また、これが最も処理効率のよい方法であるかどうかはわかりません。つまり、すべての番号に対して新しいcarer_telephoneオブジェクトを作成することです。
これは多くのアプリケーションで共通の設定でなければなりませんが、そのテーマに関するドキュメントは見つからないようです。私はDataMapperに関してこれを行うための最も標準的な方法を探しています。
コントローラ、これまで
function add() {
//Create carer object
$c = new carer();
//Create carer telephone object
$t = new carer_telephone();
//Form submitted
if($this->input->post('add_carer')) {
//Set carer data
$c->title = $this->input->post('title');
$c->first_name = $this->input->post('first_name');
$c->family_name = $this->input->post('family_name');
$c->display_name = $this->input->post('display_name');
$c->date_of_birth = $this->input->post('date_of_birth');
$c->email_address = $this->input->post('email_address');
$c->street_address = $this->input->post('street_address');
$c->town = $this->input->post('town');
$c->county = $this->input->post('county');
$c->postcode = $this->input->post('postcode');
//Set and save telephones
foreach($this->input->post('telephone') as $tel) {
$t = new carer_telephone();
$t->type = 'test';
$t->number = $tel;
$c->save($t);
}
}
//Store carer object
$this->_data['content']['carer'] = $c;
//Load view
$this->load->view('carers/add',$this->_data);
}
この上の任意の助けいただければ幸いです。誰かがこの状況に取り組んできた例への単なるリンク。
敬具、 ダン