| 제목 | 콘트롤러에서 파라메터 값을 넘길 시... | ||
|---|---|---|---|
| 글쓴이 | 닥스훈트 | 작성시각 | 2012/06/05 04:27:56 | 
|  | |||
| 아래와 같은 콘트롤러가 있습니다. 
function view_site($id='')
 {
  $this->load->model('sites/sites_model');
  $site=$this->sites_model->get_site($id);
  $data['title']="Record view";
  $data['row']=$site;
  $this->load->view('sites/view', $data);
 }그러면 저 컨트롤러는 http://127.0.0.1/view_site/3 뭐 이런식으로 호출 가능하다는건 알고 있습니다만... 컨트롤러 호출을 이렇게 한다면 
anchor('view_site', $row->id)위 view_site 콘트롤러에서 
function view_site($id=''){라고 된 부분에서 $id 변수의 값에 $row->id 로 읽어진 id 의 값이 들어가게 되는건가요?view_site($id = '') 와 같이 빈값을 파라메터로 받는 함수(콘트롤러) 정의는 본적이 없어서 말입니다. | |||
| 다음글 | hmvc에서 모듈 생성할 때 데이터를 넘겨줄려면? (2) | ||
| 이전글 | 간단한 모델에서의 구문 질문. (2) | ||
| 
                                변종원(웅파)
                                /
                                2012/06/05 05:44:07 /
                                추천
                                0
                             
                                echo $id; 해보세요
                             | 
| 
                                닥스훈트
                                /
                                2012/06/05 08:54:23 /
                                추천
                                0
                             
                                 아.. 감사합니다.. 곰곰생각해보니view_site($id='') | 
| 
                                pithecus
                                /
                                2012/06/05 09:47:38 /
                                추천
                                0
                             functionview_site($id='') | 
| 
                                닥스훈트
                                /
                                2012/06/05 09:50:13 /
                                추천
                                0
                             
                                근데 function view_site($id='') 나 function view_site($id)나  사실상 매개변수 초기값 설정(혹은 디폴트 설정)하는 것 이외엔 차이가 없는데 왜 후자의 경우는 에러가 날까요? 에러 내용은 Severity: Warning Message: Missing argument 1 for Sites::view_site() 이라고 뜨네요. | 
| 
                                pithecus
                                /
                                2012/06/05 10:10:05 /
                                추천
                                0
                             
                                 CI 에서는 컨트롤러를 호출할 때 URL 규칙에 따라 자동으로 매개변수를 입력해주거든요 즉 http://domain/view_site -> view_site() 호출 http://domain/view_site/111 -> view_site(111) 호출 ( http://codeigniter-kr.org/user_guide_2.1.0/general/controllers.html ) 그러므로 function view_site($id) 로 정의를 하면 http://domain/view_site -> view_site() 호출 -> argument 에러 발생 function view_site($id='') 로 정의를 하면 http://domain/view_site -> view_site() 호출 -> 매개변수가 없으니 $id ='' -> 에러 없음 이렇게 동작을 하게 됩니다. | 
| 
                                변종원(웅파)
                                /
                                2012/06/05 10:40:39 /
                                추천
                                0
                             
                                닥스훈트/ 어렵게 생각하면 한 없이 어려워집니다. $id='' 이 부분은 값이 안 넘어올 경우 말씀하신대로 에러가 나기 때문에 미리 정의를 해주는 겁니다. php는 변수 선언 없이 바로 사용해도 문제가 안되지만 c 언어 같은 것은 미리 선언하지 않고 쓰면 에러가 납니다. php에서도 귀찮지만 변수는 미리 선언해 놓는 습관이 좋습니다. | 
| 
                                닥스훈트
                                /
                                2012/06/05 13:33:59 /
                                추천
                                0
                             
                                 음.. 감사합니다. CI를 해보니 의외로 메뉴얼로는 좀 더 직관적으로 알 수 없는 자잘한 문법이 많던데.. 하나하나 정리를 해봐야겠습니다. |