2010-05-12 9 views
0

컨트롤러 및 라이브러리 기능이 있지만 의사 결정을 위해 라이브러리에 URI 세그먼트를 전달해야합니다.Codeigniter : 라이브러리가있는 컨트롤러 URI

컨트롤러 :

function survey($method) 
{ 
    $id = $this->session->userdata('id'); 
    $data['member'] = $this->home_model->getUser($id); 

    //Convert the db Object to a row array 
    $data['manager'] = $data['member']->row(); 
    $manager_id = $data['manager']->manager_id; 
    $data['manager'] = $this->home_model->getUser($manager_id); 
    $data['manager'] = $data['manager']->row(); 
    if ($data['manager']->credits == '0') { 
     flashMsg('warning',"You can't complete the assessment until your manager has purchased credit."); 
     redirect('home','location'); 
    } 
    elseif ($data['manager']->test_complete == '3'){ 
     flashMsg('warning',"You already completed the Assessment."); 
     redirect('home','location');       
    } 
    else{ 
     $data['header'] = "Home"; 
     $this->survey_form_processing->survey_form($this->_container,$data); 
    } 
} 

라이브러리 :

function survey_form($container) 
{ 
      if($method ==1){ 
    $id = $this->CI->session->userdata('id'); 
    // Setup fields 
    for($i=1;$i<18;$i++){ 
     $fields["a_".$i] = 'Question '.$i; 
    } 
    for($i=1;$i<17;$i++){ 
     $fields["b_".$i] = 'Question '.$i; 
    } 
    $fields["company_name"] = "Company Name"; 
    $fields['company_address'] = "company_address"; 
    $fields['company_phone'] = "company_phone"; 
    $fields['company_state'] = "company_state"; 
    $fields['company_city'] = "company_city"; 
    $fields['company_zip'] = "company_zip"; 
    $fields['job_title'] = "job_title"; 
    $fields['job_type'] = "job_type"; 
    $fields['job_time'] = "job_time"; 
    $fields['department'] = "department"; 
    $fields['supervisor'] = "supervisor"; 
    $fields['vision'] = "vision"; 
    $fields['height'] = "height"; 
    $fields['weight'] = "weight"; 
    $fields['hand_dominance'] = "hand_dominance"; 
    $fields['areas_of_fatigue'] = "areas_of_fatigue"; 
    $fields['injury_review'] = "injury_review"; 
    $fields['job_positive'] = "job_positive"; 
    $fields['risk_factors'] = "risk_factors"; 
    $fields['job_improvement_short'] = "job_improvement_short"; 
    $fields['job_improvement_long'] = "job_improvement_long"; 
    $fields["c_1"] = "Near Lift"; 
    $fields["c_2"] = "Middle Lift"; 
    $fields["c_3"] = "Far Lift"; 
    $this->CI->validation->set_fields($fields); 

    // Set Rules 

    for($i=1;$i<18;$i++){ 
     $rules["a_".$i]= 'hour|integer|max_length[2]'; 
    } 
    for($i=1;$i<17;$i++){ 
     $rules["b_".$i]= 'hour|integer|max_length[2]'; 
    } 
    // Setup form default values 
    $this->CI->validation->set_rules($rules); 

     if ($this->CI->validation->run() === FALSE) 
     { 
      // Output any errors 
      $this->CI->validation->output_errors(); 
     } 
     else 
     { 
      // Submit form 
      $this->_submit(); 
     } 
    // Modify form, first load 
    $this->CI->db->from('be_user_profiles'); 
    $this->CI->db->where('user_id' , $id); 
    $user = $this->CI->db->get(); 
    $this->CI->db->from('be_survey'); 
    $this->CI->db->where('user_id' , $id); 
    $survey = $this->CI->db->get(); 
    $user = array_merge($user->row_array(),$survey->row_array()); 
    $this->CI->validation->set_default_value($user); 

    // Display page 
    $data['user'] = $user; 
    $data['header'] = 'Risk Assessment Survey'; 
    $data['page'] = $this->CI->config->item('backendpro_template_public') . 'form_survey'; 
    $this->CI->load->view($container,$data); 
      } 
      else{ 
       redirect('home','location'); 
      } 
} 

내 라이브러리 함수는 방법으로 무엇을 해야할지하지 않습니다 ... 나는 혼란 스러워요. 내 라이브러리의 인스턴스와 관련이 있습니까?

+0

실제 코드를 여기에 붙여 넣으십시오. 코드와 질문이 너무 모호하여 무엇을 묻고 있는지 모릅니다. :-) –

답변

1

당신은 항상 당신의 라이브러리에있는 URI 클래스를 호출 할 수 있습니다 ...

$CI =& get_instance(); 

// The segments from the url 
$uri_segments = $CI->uri->segments_array(); 

// The segments from the route 
$ruri_segments = $CI->uri->rsegments_array(); 

URI 사용 설명서는 : http://codeigniter.com/user_guide/libraries/uri.html

또한, 라이브러리 기능 survey_form에 변수 $method이 설정되어 있지 않습니다. 나는 네가 원하는 것을 얻기 위해 그것을 어떻게 설정하는지 알고 싶을 것 같은데 ...? 이렇게 :

function survey_form($container) 
{ 
    $CI =& get_instance(); 

    $method = $CI->uri->segment(3): // or whichever segment you want 

    if($method ==1) 
    { 
     .... 
+0

실제로? 좀 더 자세한 정보를 제공 할 수 있습니까? 나는 PHP/CI가 처음이다. –

+0

그게 도움이 되니? – bschaeffer

관련 문제