2012-03-26 141 views
0

这是在员工控制器功能样本这个问题如何防止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 
    } 

} 

从功能add_newStaff(),我需要的,如果表单验证返回false从数据库中加载回的所有数据。这可能很麻烦,因为我需要维护两份代码。我可以用来防止这种情况的任何提示?

谢谢。

回答

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 2012-03-26 02:37:44

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 2012-03-27 07:58:39