2012-03-26 4 views
1

Есть ли способ автоматически/динамически установить все атрибуты для объекта datamapper вместо их назначения один за другим?Codeigniter Datamapper set Атрибуты объекта из почтовых данных

Так что имена полей формы точно такие же, как и атрибуты из модели 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(); 
    }} 

ответ

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

хорошо, вы ВСЕГДА можете использовать пост без какого-либо параметра, например, :

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

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

+1

В итоге я установил помощник массивов из datamapper codeigniter и закончил работу с $ c = from_array ($ this-> input-> post()); $ C-> Save(); – Simon