2012-03-26 14 views
0

これは、この質問機能add_newStaffからCodeIgniterフォームの検証でコードの重複を防ぐにはどうすればいいですか?

function newStaff() 
{ 
    $data = array(); 

    $data['departmentList'] = $this->department_model->list_department(); 
    $data['branchList'] = $this->branch_model->list_branch(); 
    $data['companyList'] = $this->company_model->list_company(); 

    $this->load->view('staff/newstaff', $data); 

} 

function add_newStaff() 
{ 
    //when user submit the form, it will call this function 
    //if form validation false 

    if ($this->validation->run() == FALSE) 
    { 
     $data = array(); 

     $data['departmentList'] = $this->department_model->list_department(); 
     $data['branchList'] = $this->branch_model->list_branch(); 
     $data['companyList'] = $this->company_model->list_company(); 

     $this->load->view('staff/newstaff', $data); 
    } 
    else 
    { 
     //submit data into DB 
    } 

} 

()、私は、フォームの検証がfalseを返す場合、データベースからすべてのデータをバックロードする必要があるためスタッフのコントローラ内の関数のサンプルです。これは2つのコードのコピーを維持する必要があるため、面倒になる可能性があります。私がこれを防ぐために使うことができるヒント?

ありがとうございました。

答えて

1

function newStaff() 
    { 
     $data = $this->_getData(); 

     $this->load->view('staff/newstaff', $data); 

    } 

    function add_newStaff() 
    { 
     //when user submit the form, it will call this function 
     //if form validation false 

     if ($this->validation->run() == FALSE) 
     { 
      $data = $this->_getData(); 

      $this->load->view('staff/newstaff', $data); 
     } 
     else 
     { 
      //submit data into DB 
     } 

    } 

    private function _getData() 
    { 
     $data = array(); 

     $data['departmentList'] = $this->department_model->list_department(); 
     $data['branchList'] = $this->branch_model->list_branch(); 
     $data['companyList'] = $this->company_model->list_company(); 

     return $data; 
    } 
+0

感謝します。どのように私は前にこの方法について考えることができないのですか? – cyberfly

1

代わりに、あなたのフォームが、それはあなたが次のようなもので、最初のフォームの要求に使用するのと同じサービスを指すのように提出するアクションを変更をすることからあなたを防ぐいただきました。これは、フォームに送信された値のいずれかを保持したい場合は、ページ読み込み間にPOST値を保持することも意味します。

function newStaff() 
{ 
    // validation rules 

    if ($this->validation->run() == TRUE) 
    { 
     //submit data into DB 
    } 
    else 
    { 
     $data = array(); 
     $data['departmentList'] = $this->department_model->list_department(); 
     $data['branchList'] = $this->branch_model->list_branch(); 
     $data['companyList'] = $this->company_model->list_company(); 

     $this->load->view('staff/newstaff', $data); 
    } 
} 
+0

ありがとう、あなたの答えは私に仕事をするためのいくつかのアイデアを与えます。 – cyberfly

関連する問題