1

複数の電話番号を持つ「介護者」をデータベースに追加することを含む codeigniter を使用してアプリケーションを構築しています。UI 側から見ると、各電話フィールドの横に追加ボタンがあり、ユーザーが別の番号を入力できるように、JavaScript マジックを使用して自分自身を複製します。フォームが送信されると、電話番号が配列として送信されます。

carercarer_telephoneの 2 つのモデルを設定しています。各モデルには、それぞれのテーブルがあります。

私は、データマッパーがすべての関係を検証してから保存できるようにする方法について頭を悩ませてきました。たとえば、現時点では、career フィールドの検証エラーのみが表示され、career_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);

}

これに関するヘルプは大歓迎です。誰かがこの状況に取り組んだ例へのリンクでも。

敬具、ダン

4

1 に答える 1

1

あなたに役立つかもしれないDataMapperに付属の配列拡張があります: http://datamapper.wanwizard.eu/pages/extensions/array.html - データベースなどに配列データを保存することができます.

于 2011-08-04T03:58:49.253 に答える