2015-01-07 5 views
-1

뷰가 있습니다 - PageView - 그 출력은 여러 ModuleView 출력의 연결입니다. 난 항상 (필요한 경우)보기 및 컨트롤러 모델을 초기화하고 싶습니다. 그 이유는 컨트롤러 액션 (많은 모델이 여러보기, 즉 프런트 엔드 및 백 엔드보기와 연결되어 있음)을 기반으로 주어진보기를 초기화하는 것이 쉽기 때문입니다.뷰에서 컨트롤러 만들기

보기에서 컨트롤러를 초기화 할 때 참수해야합니까? 그렇다면 뷰가 다른 뷰를 연결하는 문제를 해결하기 위해 어떤 방법을 권하고 싶습니까?

PHP 코드

class PageView 
{ 
    public function Output() 
    { 
     # $this->modules was set by a method called from PageController 
     foreach ($this->modules as $module) 
     { 
      $module_controller = new ModuleController(); 

      # Will initialize ModuleModel (ID of 23 in constructor) and ModuleView, then call ModuleView->Output(ModuleModel->GetData()) 
      $module_controller->ShowFrontEnd(array('module_id' => 23)); 
     } 
    } 
} 

이 프로젝트는 무거운 AJAX 페이지 및 모듈 컨트롤러 따라서 필요하다. 목표는 PHP에서 MVC 패턴을 경험 한 사람들이 손쉬운 확장 성과 가독성을 제공하는 것입니다.

+0

다른 뷰의 일부로보기에서 컨텐트를 얻기 위해 컨트롤러 메서드를 호출하고 있습니까? – didierc

+1

@didierc 거의. 다른보기의 출력을 현재보기로 가져 오기 위해 현재보기에서 컨트롤러 메서드를 호출하고 있습니다. –

+0

아, 그게 내가 의미하는 바야, 혼란스러워. – didierc

답변

0

예, 목격됩니다. 컨트롤러는 산란/처리 뷰가되어야합니다. 보기에서 컨트롤러를 초기화하는 경우 더 이상 MVC가 아닙니다.

+1

사실 둘 다 틀 렸습니다. 컨트롤러와 뷰는 "프론트 컨트롤러"에 의해 생성되어야합니다. –

관련 문제