2010-08-09 3 views
3

필자는 항상이 모델을 다소간 데이터베이스 쿼리를 저장하고 실행하기 위해 사용했습니다. 나는 뚱뚱한 모형, 얇은 관제사 개념에 관하여 들었다.CodeIgniter 모델에는 어떤 것이 포함되어 있습니까?

내 모델을 설치하는 방식에 따라 폼의 유효성 검사, 데이터 서식 지정 등의 작업에 많은 양의 정크가 발생합니다. 양식 유효성 검사, 파일 업로드 및 데이터 형식 지정이 컨트롤러 또는 모델에 속합니까?

나는이 질문이 주관적인 것이라는 것을 알고 있는데, 구체적인 대답보다는 좋은 토론을해야한다.

답변

3

양식 확인은 분명히 모델의 일부 여야합니다. 나는 일반적으로 각 폼을 하나의 모델로 나타내며 소독 된 포스트/패러미터를 전달합니다. 그런 다음 모델은 입력을 기반으로 필요한 모든 조치를 취할 수 있으며 성공 또는 실패를 알리기 위해 속성 (선택적으로 게터 포함)을 사용할 수 있습니다. psuedo 코드에서 다음과 같이 보이길 원합니다.

class Controller 
{ 
    function action() 
    { 
     $input = new Input(); 
     $form = new FormModel($input); 
     if ($errors = $form->errors()) 
     { 
      //load the appropriate view for the errors 
     } 
     else 
     { 
      //load the appropriate view for success with an optional redirect 
     } 
} 
+1

내가이 라이브러리 http://frankmichel.de/formgenlib/user_guide/introduction/getting_started.html – Keyo

+0

@keyo 도움이 될 생각하는 데 도움이됩니다. 컨트롤러에 양식 (필드, 레이블, 유효성 확인 요구 사항)에 대한 모든 정보가 있어야합니다. 이것은 옳지 않습니다. 좋은 PHP MVC 프레임 워크를 보지 않으려면 Kohana를 확인하십시오. – aaronasterling

+0

좋은 구조의 kohana 또는 다른 것을 사용할 수 있으면 좋겠지 만, 저는 CI와 함께 일하고 있습니다. 그래도 일부 ORM 엔진을 사용하여 설정할 수 있습니다. – Keyo

0

모델은 데이터 (대부분의 경우 데이터베이스)와 상호 작용합니다. 컨트롤러는 모델을 사용하여 데이터에 액세스합니다.

3

두 가지 주요 도로가 있습니다. 씬 컨트롤러/팻 모델 또는 팻 컨트롤러/씬 모델. 기본적으로 상호 작용의 대부분을 넣었습니까? 모델의 주요 부분을 유지하는 편을 선호합니다. 그렇게하면 코드는 거의 모든 컨트롤러 및/또는 lib에서 사용할 수 있습니다. 코드가 컨트롤러에 남아 있으면 다른 컨트롤러에서 코드를 사용하는 것이 어렵지는 않지만 불가능합니다.

lije 유효성 검사 및 기타 일반적인 작업은 lib 또는 도우미에 있어야합니다. 무거운 짐을 싣기 위해 "노동자"(나는 그들에게주는 이름이다) 세트를 생산할 수있다. 또한 CI에는 CI 팀과 커뮤니티의 준비된 라이브러리와 도우미가 많이 있습니다. 풍부한 정보를 찾을 수있는 위키 둘러보기. 이 CI 내 불만 중 하나입니다 -

희망이 내지 Vx

관련 문제