2012-03-26 31 views
1

屬性是否有自動/動態設置爲DataMapper的對象的所有屬性,而不是賦予它們一個一個的方法嗎?笨的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(); 
    }} 

回答

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

您可能遇到的主要問題是客戶端加載程序也在數組中獲得'client-add'字段。但是你應該控制類加載器中的輸入。

+1

我結束了從笨DataMapper的安裝陣列助手,結束了做$ C = from_array($這個 - >輸入 - >後()); $ C-)>保存(; – Simon 2012-03-26 22:03:10