CI 묻고 답하기

제목 기존 날코딩 되어있는 코드를 MVC 패턴으로 바꾸는 작업 관련 질문입니다.
글쓴이 브레인토스트 작성시각 2016/06/13 09:36:13
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 15009   RSS

제가 CI는 얕게 강의만 보고 작업을 진행해야 하는 상황인데요.

View는 사용하지 않고 Model과 Controller로 코드를 분할만 하면되는데 어떻게 시작해야할지 감이 잘안옵니다.

 

코드의 대략적인 흐름은 이런식입니다.

- 이메일 확인

- 특정 방법 비밀번호 암호화 후 db와 확인

- 탈퇴 유무 확인

- 출력

 

이런식이라고 했을때 하나하나의 db 조회?? 이런 것들을 전부 메소드의 형태로 만들어야 하는건가요?

그리고 로직 자체가 대부분 데이터베이스 조회인데 그럼 controller에는 어떤 부분이 들어가야 하는건가요?

CI에서 컨트롤러와 뷰는 컨트롤러를 통해서만 불러져야 한다고 알고있는데요.

그냥 전체 크게 controller로 함수를 만들고 그안에 model(데이터베이스 관련) 함수를 호출하는 형태여야 하는건가요?

 

 다음글 하위 폴더에 CI 설치 (1)
 이전글 views 폴더 밑 하위폴더에서 views에 있는 파일... (2)

댓글

변종원(웅파) / 2016/06/13 11:43:25 / 추천 0

db에 관한 부분만 모델에서 처리하신다고 보시면 됩니다.

컨트롤러에서 데이터를 받아서 모델로 전달. 모델에서 1, 2, 3 처리후 결과 리턴

결과를 화면에 출력

브레인토스트 / 2016/06/13 12:07:42 / 추천 0
그럼 db에 있는 것은 간단하게 조회 insert 이런식으로 작성하고 controller에서 만약에 데이터를 제이슨으로 받았다면 그걸 controller에서 decoding하고 각 model의 메소드에 뿌려주는 방식인건가요 ?
kaido / 2016/06/13 12:28:28 / 추천 0

CI  MVC패턴이 익숙하지 않은 것으로 사료됩니다.

간단한 샘플을 하나 만들어서 테스트 하시면 바로 어떤 작업을 해야 할지 이해가 가실 것입니다.

 

만일 생소 하시다면 이렇게 작업 해보세요.

 

컨트롤러를 하나 만듭니다.

모델은 했다고 치고 주석을 달아 둡니다.

배열로 원하는 값을 샘플용으로 만들어 두고 컨트롤러만으로 프로세스를 처리해 봅니다.

 

이렇게 하나의 로직이이 완성이 되면 이제 원하는 배열값을 리턴 받는 곳에 모델을 넣으면 됩니다.

CI_ORL / 2016/06/13 12:41:25 / 추천 0

MVC 중 프런트 작업이 V 가 하는 건 아시는 거 같습니다.

M 이 하는 건 DB 관련 작업을 주로 다루며,

C는 M이 주는 자료를 V에게 넘기는 역활, 혹은 반대 역활을 합니다.

위의 경우,

V 에서 넘어온, 이메일과 비밀번호를 C 가 받아

M에게 정보를 넘겨 주는 역활을 하게 되고,

M은 받은 정보를 가공(암호화), 분류 , 검색하여, C 에게 리턴시켜주고,

C 는 이 값을 V에게 다시 넘겨주는 역활을 하게 됩니다.

순수 PHP 로 다시 풀이 하면,

입력 폼 페이지 -> 처리페이지 -> (처리물 가공 후) 출력 페이지 에서 화살표가 C 입장으로,

C 코드는 대체로 짧으며, 교통 정리를 하는 역활을 주로 수행합니다.

때에 따라 M 에서 받은 처리물을 가공하는 역활도 합니다.

이현재 / 2016/06/13 12:49:15 / 추천 0

mvc 에 익숙하지 않은 것 같은데 복잡하게 생각할 필요는 없습니다.

m : 실제적 로직 처리, v : 출력 페이지, c : m과 v 그리고 클라이언트의 연결고리 로 여기시면 됩니다.

c와 m에 대해 혼동이 오시는 것 같은데, c는 통로, m이 로직 처리로 생각하세요.

브레인토스트 / 2016/06/13 13:19:20 / 추천 0
음 그러니까 .. Controller는 uri만 정의해주는 느낌으로 만들고, Model에서 실제 select, select, insert, update 이런순으로 진행하면 된다는 말씀들이신거죠 ?? 이게 지금 모바일 클라이언트의 요청에 응답해서 echo로 데이터를 보여주는 거였는데 그럼 이 에코는 어디에서 처리를 해야하나요?? view인가요 ?
kaido / 2016/06/13 13:28:16 / 추천 1

Controller == php file 이라고 봐도 무방 합니다.

Controller function ==  page 입니다.

 

가령 email_form.php  email_send.php email_check.php 파일이 있다고 칩시다.

그럼 php 파일이 무려 3개나 있습니다.

이걸 1개로 압축이 가능합니다.

 

Email.php 이라는 Controller 를 만들면 말이죠.

 

그리고 해당 Controller 안에는

function email_form(){

//이안에 email_form.php 파일 내용을 전부 갖다가 복사 붙여넣기

}

function email_send(){

//이안에 email_send.php 내용 전부 붙여넣기...

}

 

 

이런식 입니다.

 

저기서 Controller 역할을 하는 php 로직은 Controller function 안에 놔두고  sql 역활을 하는 쿼리문은 model 에 넣어둡니다.

 해당 하는 쿼리문을 호출해서 원하는 값을 리턴 받아서 Controller 에서 이를 가공해서 처리하고 view 에 데이터를 넘겨서 프린트 합니다.

 

 즉 원래 1개의 파일로 구성된 php 파일에서 각자 역활을 분담해서 3개의 종류로 나눈것입니다.

어렵게 생각 해서 사고의 미궁에 빠져들지 마세요 ^^