1

1 つずつ割り当てるのではなく、datamapper オブジェクトのすべての属性を自動的/動的に設定する方法はありますか?

したがって、私のフォーム フィールド名は、datamapper モデルの属性とまったく同じです。

これを行うためのより短い方法はありますか:

function add() {
 if( $this->input->post('client-add')) {
 $c = new Client();
 $c->name = $this->input->post('name');
 $c->email = $this->input->post('email');
 // and so on for about 20 more properties

 $c->save();
  }}
4

2 に答える 2

1

まあ、次のように、パラメータなしでいつでも投稿を使用できます。

function add()
{
    if($this->input->post('client-add')) {
        $c = new Client($this->input->post());
    }
    $c->save();
}

発生する可能性のある主な問題は、クライアント ローダーが配列内の「client-add」フィールドも取得することです。ただし、クラスローダーで入力を制御する必要があります。

于 2012-03-26T16:11:16.443 に答える
1

単純にループで実行する必要があります。

function add() {
    if ( $this->input->post('client-add') ) {
        $c = new Client();
        $fields = array('name', 'email', 'and', 'so', 'on');

        foreach ( $fields as $field ) {
            $c->$field = $this->input->post( $field );
        }

        $c->save();
    }
}
于 2012-03-26T14:58:22.193 に答える