2017-11-21 1 views
0

Codeigniter 기본 사항을 익혔지만 멈췄습니다. 그래서 다시 재평가해라.codeigniter에서 페이지를로드하기위한 스위치 케이스 사용

나는 이것을하는 더 진보 된 방법이 있다는 것을 알고 있지만, 내가 이해할 수있는 방법을하고 싶습니다. 나는 단지 혼란 스러울 고급 자료들을 물고 싶지 않습니다. 붙여 넣기 스 니펫을 온라인으로 복사하는 것은 매우 쉽지만 내 코드에서 모든 것을 이해하고자합니다.

어쨌든, 항상 if 문을 PHP, idk로 다시 사용했습니다. 왜 코드 케이스에 적절한 가이드 라인을 찾지 않았는데, 스위치 케이스가 가장 익숙한 if 문을 사용하고있는 경우가 있습니다.

그래서 내 프로젝트에서 내 링크는 이런 식으로 만들어졌습니다.

<a href="<?php echo base_url();?>pages/view/home">Homepage</a> 

그리고 내 컨트롤러에서

, 내가로드 할 페이지를 알 수 있도록 URI 세그먼트를 꺼내 내보기 방법을 설정했습니다.

$data = array('page' => $this->uri->segment(3,home)); 

switch ($data['page']){ 
case 'home'; 
$data['tile'] = "Homepage"; 
$data['page'] = "userhome"; 
break; 
case 'login'; 
$data['tile'] = "Login"; 
$data['page'] = "userlogin"; 
break 
} 

$this->load->view('templates/header',$data); 
$this->load->view('templates/navbar'); 
$this->load->view('pages/'.$data['page']); 
$this->load->view('templates/footer'); 

하지만 작동하지 않습니다. 제목과 페이지는 변경되지 않습니다.

else 문을 사용하면 쉽게이 작업을 수행 할 수 있습니다. 경우 전환 어디 선가 읽은

$temp = $this->uri->segment(3,'home'); 

if($temp == "home"){ 
$data = array('title' => 'Homepage' , 'page' => 'home'); 
$this->load->view('template/header',$data); 
$this->load->view('template/navbar'); 
$this->load->view('pages/'.$data['page']); 
$this->load->view('template/footer'); 
}else if($temp == "login"){ 
$data = array('title' => 'Login' , 'page' => 'userlogin'); 
$this->load->view('template/header',$data); 
$this->load->view('template/navbar'); 
$this->load->view('pages/'.$data['page']); 
$this->load->view('template/footer'); 
} 

가 다른 경우보다 빠른, 난 그냥 지금까지 다른 페이지 병이 미래에 할 로그인 및 홈페이지하지만로드됩니다를 만들어 필자에게 처음 2 페이지를 보여주는거야 같은 방식으로 코드가 길어집니다. 그래서 내가 스위치 케이스를 사용하는 데 관심이있었습니다.

이것은 data['title'] 대신에, 당신은 switch 문, 당신은 data['tile']에 값을 할당하고있는 잘못 입력을 가지고 있기 때문에 그것이 될 수

$temp = $this->uri->segment(3,'home');  
     switch ($temp){ 
     case 'home': 
     $data = array('title' => "Homepager" , 'page' => "home"); 
     $this->load->view('template/header',$data); 
     $this->load->view('template/navbar'); 
     $this->load->view('pages/'.$data['page']); 
     $this->load->view('template/footer'); 
     break; 
     case 'login': 
     $data = array('title' => "Login" , 'page' => "userlogin"); 
     $this->load->view('template/header',$data); 
     $this->load->view('template/navbar'); 
     $this->load->view('pages/'.$data['page']); 
     $this->load->view('template/footer'); 
     break; 
     } 
+1

/스위치를 사용하는 것이 가장 좋은 방법이라고 생각하지 않습니다. CodeIgniter는 자체 라우터를 가지고 있으며이를 사용하여 페이지별로 1 개의 기능을 작성합니다. 그리고 문제가 있으면,'$ data [ 'page']'변수에 값이 좋은지를보기 위해서'var_dump '하십시오. –

답변

0

불구하고 일?

+0

또한 ** if ** 예에서 페이지는 "집"이지만 ** 스위치 ** 예에서는 페이지가 "userHome"입니다. –

+0

내 문제는 그것이 값을 변경하지 못했습니다. 스위치 케이스 코드가 실행되었는지 알 수 없습니다. – John

+0

나는이 이름을 여기에서 바꿨다. 나는 게으르다. 왜 그런 차이가 있는지 그 이유를 여기에서 되돌려 놓는다. 편집을 확인하고, 작동했던 새로운 스위치 케이스를 추가했습니다. – John