2010-11-30 3 views

답변

0

MVC의 불가지론 적 접근법에서 모델로 돌아가는 뷰는 correct approach입니다. 정석 꾼은 언제나 관제사에게 돌아갈 것이라고 말할 수 있습니다.

here에서 코멘트 ... 모델은 행동과 (보통 뷰에서)의 상태에 대한 정보 요청에 응용 프로그램 도메인의 데이터, 응답을 관리하고 응답

상태로 변경 (일반적으로 컨트롤러에서).

"보통"이라는 문구가 중요합니다. 패턴은 어느 정도 관리가 쉽고 유지 보수가 용이하도록 설계되었습니다. 때때로 패턴은 유지 보수가 가능하고 관리가 용이 ​​한 방식으로 목표를 달성하는 데 방해가되며 때때로 남용됩니다.

나는 어느 쪽의 경로가이 인스턴스 (소규모)에서는 괜찮을지를 모으 겠지만, 응용 프로그램 전체에서 문제에 어떻게 접근하고 있는지에 대해서도 알고있다.

+0

그래서 모델을 뷰에서 호출하겠습니까? – roger

+0

@Roger 추가 정보 추가 ... –

+0

뷰에 너무 많은 코드를 추가하지 않고도 뷰에서 모델을 호출하는 방법을 여전히 볼 수 없습니다. 모델에서 뷰의

에서 오는 데이터로 SQL 쿼리를 만들길 원합니다. 모델을 호출하기 전에 폼이 뷰에 제출되었는지 정말로 확인해야합니까? 보기에 너무 많은 코드가있는 것처럼 느껴집니다. – roger

1

CodeIgniter 뷰에서는 컨트롤러에서 데이터를 가져 와서 매개 변수를 역 다중화/유효성 검사하고 모델에서 적절한 데이터를 검색합니다.

  1. 조회수가 출력됩니다 : 그것은하는 것이 중요합니다. HTML/XML/JSON/CSS (페이지, 논리적 부분 또는 API 및 리소스와 같은 출력 데이터 조각)를 정의하므로보기가 모델과 직접 결합되지 않습니다. 즉, CI의 뷰에서 모델을 호출하지 않습니다.

  2. 컨트롤러는 프록시입니다. 컨트롤러 및 모델은 출력을 생성하지 않습니다. 컨트롤러는 GET 및 POST 요청을 가져 와서 결과를 인쇄하기 위해보기에 필요한 호출을 수행하며 종종 매개 변수를 확인하고 여러 모델 호출을 다중화하여 모든 적절한 데이터를 가져옵니다.

  3. 모델은 데이터를 가져오고 넣습니다. 모델은 모델의 데이터 객체로 또는 더 일반적인 (그러나 일관된) 데이터 해시로 데이터를 불가 지 형식으로 반환해야합니다. 리턴 된 모델 데이터가 클수록 뷰와 모델 사이에 더 적은 커플 링 (모델 조각을 재사용 할 수있게됩니다)이 줄어 듭니다.

    • 자바 스크립트는 종종 뷰에 관련 끝 (그리고 일반적으로 컨트롤러 작업, 검증 등의 작업을 수행 할 수 있음) : CodeIgniter의에서

는 중복을 찾을 수있는 몇 곳이 있습니다. 보기에서 자바 스크립트를 이동하여이를 향상시킬 수 있습니다 (더 큰 조각에서는 잘 작동하고 작은 조각에서는 잘 작동하지 않음).

  • PHP에서 반환 해시 (키/값 배열)는 객체를 반환하는 것보다 쉽습니다 (코드는 적지 만 유형 안전성이 감소 함). 이것은 종종 커플 링의 원천입니다.
  • 공유 출력 항목은 종종 컨트롤러로 연결됩니다 (CI 도우미 라이브러리로 이동하여이를 피할 수 있음).
  • 목표는 특정 사양을 충족하는 데이터를 수신한다는 점을 제외하고 모델을 인식하지 못하게하는 것입니다. 컨트롤러는 HTML 출력을 생성하지도 않고 직접 데이터에 액세스하지도 않으며, 모델은 대부분 SQL이나 다른 형태의 데이터를 가져 와서 구조화 된 것으로 채워 넣습니다.

    0

    예, 양식 데이터를 컨트롤러 기능에 제출합니다. 이 함수는 데이터를 처리하고 뷰를 호출합니다.

    다른 방법으로 시도하면 코드가 손상됩니다.

    하나의 기능으로 양식의 원래 표시와 해당 양식의 제출을 ​​처리 할 수 ​​있습니다.

    양식이 제출되었는지 확인하고 제출 된 경우 데이터를 처리하고 양식을 표시하십시오.

    function login(){ 
    
        if($this->input->post('submitted')==1){ 
    
        //process the form data 
    
        }else{ 
    
        //show the form 
    
        } 
    
    } 
    
    관련 문제