Codeigniter Datamapper устанавливает атрибуты объекта из данных поста - PullRequest
1 голос
/ 26 марта 2012

Есть ли способ автоматически / динамически установить все атрибуты для объекта 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();
  }}

Ответы [ 2 ]

1 голос
/ 26 марта 2012

хорошо, вы всегда можете использовать сообщение без каких-либо параметров, например:

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

Основная проблема, которую вы можете иметь, заключается в том, что загрузчик клиента также получает поле 'client-add' в массиве,Но вы должны контролировать входы в загрузчиках классов.

1 голос
/ 26 марта 2012

Вы должны просто запустить его в цикле:

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();
    }
}
...