제목 | 컨트롤러 사용에 관한 질문입니다. 고수님들 댓글 좀^^;; | ||
---|---|---|---|
글쓴이 | 용준(쭌) | 작성시각 | 2013/09/03 16:49:07 |
|
|||
안녕하세요 초급 개발자 입니다. 컨트롤러를 사용하는데에 있어서 궁금한게 있어서 몇 가지 질문을 드립니다. 현재 URL구조를 보면 ~~~~~.com/shop/~~/~~ 이렇게 되어있습니다 (index.php는 생략했습니다). 당연히 shop이라는 컨트롤러를 생성했습니다. 페이지 작업을 하다가 ~~~~.com/list/!!/!!로 페이지를 이동하고 싶은데요 여기서 몇 가지 질문이 있습니다. 1. shop컨트롤러에서 if($this->uri->segment(1) == 'list'){ $this->load->view('~~~~'); } 를 호출할 수 있는지요 2. 즉, List라는 컨트롤러를 생성하지 않고도 Shop이라는 컨트롤러에서 위의 방법을 사용하여 ~~~~~.com/list/!!/~~ 이러한 형식의 URL구조를 사용하는게 가능한지 여쭙고 싶습니다. 3.URL라우팅을 제외한 방법을 알려주시면 감사하겠습니다^^ 4. Unable to load your default controller. Please make sure the controller specified in your Routes.php file is valid. 위와 같은 에러가 발생합니다. 5. 제가 만들 소스의 일부입니다. public function _remap($method, $params = array()) { $this->Server_Current_Class = $this->uri->segment(1); $this->Server_Script_Name = '/'.$this->Server_Current_Class.'/'.$method.'/'; $this->Server_Query_String = (($_SERVER['QUERY_STRING']=='') ? '' : '?'.$_SERVER['QUERY_STRING']); //------------------------------------------------------------------ [Skin] $data['Skin_Header'] = $this->load->view('skin/Shop_Header','', TRUE); $data['Skin_Login'] = $this->load->view('skin/Shop_Login', '', TRUE); $data['Skin_Footer'] = $this->load->view('skin/Global_Footer', '', TRUE); if($this->uri->segment(1) == 'list'){ $data['Skin_Content'] = call_user_func_array(array($this, 'fn_ShopInfo'), $Shop_No); $this->load->view('skin/Shop', $data); } // Method가 있으면 해당 함수 실행 if (method_exists($this, 'fn_'.$method)) { // //-------------------------------------------------------------- [Model] // $this->load->model($this->Server_Current_Class.'/geolocation'); // $data['arrRtn'] = $this->geolocation->getData(); // $data['Skin_Header'] = $this->load->view('skin/Shop_Header', $data, TRUE); $data['Skin_Content'] = call_user_func_array(array($this, 'fn_'.$method), $params); $this->load->view('skin/Shop', $data); } // Method가 없으면 업소정보 화면 실행 else { // 두번째 세그먼트가 없으면 화면 없음 if (is_null($this->uri->segment(2)) OR strlen($this->uri->segment(2)) == 0) { show_404(); } // 두번째 세그먼트가 있으면 업소정보 else { $Shop_No = $this->uri->segment(2); $data['Skin_Content'] = call_user_func_array(array($this, 'fn_ShopInfo'), $Shop_No); $this->load->view('skin/Shop', $data); } } |
|||
다음글 | 세션 만료시간을 갱신하는법이 없을까요? (5) | ||
이전글 | tank auth의 username 과 user_id (2) | ||
변종원(웅파)
/
2013/09/03 16:59:08 /
추천
0
|
용준(쭌)
/
2013/09/03 17:11:34 /
추천
0
단순하게 말씀드리면
검색 버튼을 눌렀을 때, ~~~~~.com/list/검색어로 이동하고 싶은 것입니다. 그치만 위의 URL로 이동을 한다는 의미는 list 컨트롤러를 사용해서 이후 작업을 처리해주겠다는 의미인데 업무에서 요구는 위의 1번과 같은 방법을 원하고 있는 것 같습니다. 라우팅 밖에는 방법이 없군요 |
용준(쭌)
/
2013/09/03 17:12:45 /
추천
0
한가지 더 적어보면 class List extends~~ 는 선언이 안되는 것 같더라구요
|
변종원(웅파)
/
2013/09/03 17:14:30 /
추천
0
list는 예약어입니다.
|
용준(쭌)
/
2013/09/03 17:17:46 /
추천
0
웅파님 그렇다면 결국
~~~~.com/shop/!! ~~~~.com/info/!! 이 두개의 URL사용을 위해서는 shop과 info 컨트롤러가 각각 따로따로 있어야 하는 것이죠?? |
한대승(불의회상)
/
2013/09/03 17:49:04 /
추천
0
용준(쭌)/ route를 사용하면 하나로 처리 가능 합니다만....
|
변종원(웅파)
/
2013/09/03 18:19:53 /
추천
0
용준(쭌)/ 라우팅을 안한다는 전제하에서 따로 만들어야 합니다.
|
용준(쭌)
/
2013/09/03 18:37:28 /
추천
0
한대승(불의회상)/ route를 사용하면 가능하군요 공부를 좀 더 해봐야겠네요
|
양승현
/
2013/09/05 08:41:59 /
추천
0
route를 사용하면 특정 또는 전체 url에 대해 컨트롤러를 강제로 지정할수 있겠죠.
근데 shop>lists로 url이동시 같은 컨트롤러인데 세그먼트1의 값이 달라지는건 비추 입니다.
세그먼트값(컨트롤러/메소드) 형태로 쓸때 url을 보고 컨트롤러를 찾고 메소드를 찾는게 편한데 그걸 임의로 돌려 감추면 다름사람들이 해당 소스를 찾고자 할때 멍때릴수 있어요 ^^
|
무슨 작업을 하려는지 더 자세하게 올리시면 더 나은 답변을 받으실 수 있을 것 같네요.
단순히 주소이동을 하려는건지, 다른 컨트롤러를 불러 사용하려는 것인지 의도파악이 안되서요.
1. shop컨트롤러면 세그먼트 1번이 shop이겠죠. 작동 안합니다.
2. shop컨트롤러에서 왜 가상의 list 컨트롤러를 호출하려는지 알아야 정확한 답변이 가능합니다.
3. 존재하지 않는 컨트롤러를 있는 것처럼 사용하려면 라우팅해야합니다.
4. routes.php안에 default컨트롤러를 선언하는데 그 파일조차 없을때 나오는 에러입니다.