CI 묻고 답하기

제목 이해가 안되는게 있어 질문을 드렸습니다.
글쓴이 정수리 작성시각 2016/06/28 14:39:11
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 19707   RSS

방금 전

$this->load->view()에 세그먼트 값을 붙여서 전달할수 있는지에 대해

 

질문을 올렸습니다.

한대승님이 올려주신 답변을 통해 보내는 방법도 알았고 이해도 했습니다;

 

그런데 제가 잘못 인해 한건지 이해가 안되는 부분이 있어 궁금하여 질문을 올렸습니다.

 

A뷰페이지

버튼<a href="/Bcontroller/segment">

B컨트롤러

this->model();

this->load->view(c페이지, model데이터);

 

이렇게 흐름이 흘러갑니다

c페이지의 경우 segment에 따라 메뉴가 다르게 보이도록 하였습니다.

그래서 한대승님께서 알려주신 방법을 통해 segment을 값으로 저장하여 볼낼려고 했습니다.

그런데 그럴필요없이  A페이지에서 정해놓았던 segment값이 그대로 c페이지에서 적용이 되어

메뉴가 바뀝니다;; 저는 A뷰페이지에서 B컨트롤러로가면 거기서면 controller를 사용할수 있고 B컨트롤에서

다른 페이지를 로드할때는 새로 세그먼트를 정해줘야 되는지 알았는데 그렇지 않더라구요..;;

한번정해놓은 세그먼트는 어느 페이지에서든 사용할수 있는건가요?

 다음글 앱/웹을 같이 사용하는경우 이렇게 만들어도 될까요? (4)
 이전글 기초적인 질문입니다. (6)

댓글

배강민 / 2016/06/28 15:19:26 / 추천 0

세그먼트란 단순히 쿼리스트링입니다. 즉, 그냥 url을 파싱해서 만들어내는 값입니다.

http://www.com/controller/method/a/b/c/d/e/

라는 주소로 접속하게되면

실제 http://www.com/index.php/controller/method/a/b/c/d/e 로 접속하고

index.php 뒤의 쿼리스트링을 / 구분으로 쪼개서

특별히 라우팅없고, 서브폴더가 없는 기본구조라면

/ 구분으로 쪼개진 배열의

첫번째 string의 controller를 찾아서 include하고

두번째 string의 method를 찾아서 실행합니다.

그 뒤의 a, b, c, d, e 는 각각의 세그먼트입니다.

(단, 여기까지를 모르셨다면, 죄송하지만, 메뉴얼 다시 처음부터 탐독하시길 바랍니다.)

자, 이제, 제가 이해한 상황은 A 페이지는 단순히 링크이고, 누르면 B controller 페이지로 이동하는 것이고 거기에 세그먼트가 붙어 갑니다.

B controller 에서 C view를 호출합니다. 하지만 주소는 그대로 /Bcontroller/segment 이거겠지요.

C view를 쓰는건 단순히 껍따기를 가져오는것이지, 실제는 Bcontroller + segment가 동작하는것이지요.

그러므로 당연한 결과입니다.

한대승님께서 말씀하신 전달은 세그먼트로 받은 값을 load->view 에 보내는 데이터가 추가해서 보내서 사용하시라는 말씀일듯싶네요.

당연하지만, 여기서 데이터를 던졌다고 쳤을때 view에서 segment() 를 이용해서 값을 처리한다면 그는 url 기준이므로 원하는 상황을 만들 수 없습니다. 다른 방법을 써야겠지요.

어떤 상황을 만들고 싶으신건지는 모르겠지만, 더 고민해보시지요

정수리 / 2016/06/28 16:12:26 / 추천 0

@배강민

자세한 설명 정말 감사합니다^^

다행히도 원하는 결과는 잘 나왔습니다.

제가 생각했던것과 다르게 뜻하지 않은  방식으로  구현이 되서 궁금하여 글을 올리게되었습니다.

답변을 통해 이제 이해가 되었네요 감사합니다