2011-08-01 13 views
1

複数の電話番号を持つ「介護者」をデータベースに追加するコードネイターを使用してアプリケーションを構築しています。 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); 

} 

この上の任意の助けいただければ幸いです。誰かがこの状況に取り組んできた例への単なるリンク。

敬具、 ダン

答えて

関連する問題