2011-02-28 5 views
3

컨트롤러가 얼마나 마른가? 나는 모든 비즈니스 로직을 모델 안에 넣는 것을 이해하지만 다른 것들은 어떨까요?컨트롤러는 얼마나 마른 체형이어야하며, 지방 모델은 얼마나되어야합니까?

예를 들어, 각 사용자가 여러 게시물을 가질 수있는 블로그 사이트를 작성한다고 가정 해보십시오. 현재 사용자는 게시물 컨트롤러를 방문하고 만들기 작업을 실행하여 게시물을 만듭니다. 여기에 현재 일어날 일의 작은 샘플이 있습니다.

제 질문은 위와 같은 논리를 사용자 모델에 적용하는 것을 막을 수 있습니다.

이렇게하면 컨트롤러가 놓은 것보다 훨씬 작아집니다. 사용자가 게시물을 만드는 사람이기 때문에 나에게 더 의미가 있습니다. 그래서 컨트롤러와는 달리 사용자 모델에 있어야한다고 생각합니다.

도움이된다면, Kohana 프레임 워크를 사용하고 있습니다.

감사합니다.

+5

내가 잘못 생각한 것 같습니다. 내가 아는 대부분의 모델은 마른 체형이며 회계 부서에는 뚱뚱한 컨트롤러가 가득합니다. P – jevakallio

+0

haha, funny & true. 그러나 심각하게, 나는 컨트롤러가 얼마나 마른 체인지에 대해 궁금합니다. – BDuelz

+0

나는 컨트롤러가 논리라는 이유로 컨트롤러를 만드는 어떤 시점에서 내 자신을 발견했다. 나는 이제 이것이 갈 길이 아니라고 확신한다. 모델에는 일종의 논리가 있고 컨트롤러에는 다른 논리가있다. 종류. 모델이나 컨트롤러가 뚱뚱해 지는지 신경 쓰지 않고도 나를 더 잘 이해할 수있는 로직을 넣습니다. 뚱뚱한 모델이 필요한 상황이라면 괜찮아. 나는 zombor의 답을 좋아한다. – Melsi

답변

4

컨트롤러에서 트래픽을 처리해야합니다. 모델은 비즈니스 논리가있는 곳을 대상으로하므로 일반적으로 두 번째 예제는 "올바른 MVC"가됩니다.

기본적으로 컨트롤러는 입력 요청, 모델 변경 상태 변경 (실제 상태 변경 자체 수행), 표시 할보기 (있는 경우) 결정 등의 작업을 수행해야합니다.

는 단순히과 같이 많은 컨트롤러가 있습니다

class Controller_Foobar extends Controller 
{ 
    public function action_index() {} 
} 

을 그리고 그들은 $ _POST 입력을 처리해야하는 경우, 그들은 그 것은 데이터를 잡은 모델, 다음 뷰에를 보낼 수 있습니다.

모든 논리를 모델에 유지하면 쉽게 재사용 할 수 있으며 유지 관리가 쉽고 테스트 할 수 있습니다.

+0

데이터 조작이 필요한 경우 (예 : 별도의 날짜 및 시간 필드에서 타임 스탬프를 준비하는 경우) 컨트롤러에서 수행합니까, 아니면 문자 그대로 POST에서 모델로 데이터를 전달합니까? – BDuelz

+0

아마 모델에 속해있을 것입니다. – zombor

관련 문제