2012-03-26 7 views
1

datamapper 객체를 하나씩 할당하는 대신 모든 속성을 자동/동적으로 설정할 수 있습니까?Codeigniter Datamapper는 Post 데이터의 객체 속성을 설정합니다.

그래서 내 양식 필드 이름은 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

아니라, 당신이에 allways처럼, 어떤 매개 변수없이 게시물을 사용할 수 있습니다 :

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

주요 문제는 클라이언트 로더가 배열의 '클라이언트 추가'필드도 가져옵니다. 그러나 클래스 로더의 입력을 제어해야합니다.

+1

코드 헬터 datamapper에서 배열 도우미를 설치하는 것으로 끝나고 $ c = from_array ($ this-> input-> post()); $ c-> save(); – Simon

관련 문제