2016-10-19 3 views
1

저는 CI + HMVC 설치 작업을하고 있습니다. HMVC 함수 호출을 사용할 때 :CodeIgniter HMVC

Modules::run("header"); 

화면에 아무 것도 인쇄하지 않습니다. 그러나 나는 실행하는 경우 :

echo Modules::run("header"); 

나 :

$x = Modules::run("header"); 

그 다음이 작동합니다.

내가 일하기 위해 노력하고 코드입니다 :

// HOME MODULE 
class Home extends MX_Controller{ 
    public function index(){ 
     Modules::run("header"); 
     $this->load->view('home_view'); 


     Modules::run("header"); 
     } 
    } 
// HEADER MODULE 
class Header extends MX_Controller{ 
    public function index(){ 
     $this->load->view('header_view'); 
    } 
} 

// FOOTER MODULE 
class Footer extends MX_Controller{ 
    public function index(){ 
     $this->load->view('footer_view'); 
    } 
} 

을하지만 그것을 실행할 때 난 단지 "home_view"내용을 참조하십시오. 머리글과 바닥 글이 없습니다.

나는 그것을 해결하기 위해 위의 방법을 사용할 수 없습니다 $ this->로드 ->보기() 버퍼링, 내 바닥 글 아래에 내 "home_view"내용이 내 HTML의 하단에 표시하게하는,이 미치게 때문에 소지품.

모듈 : run()이 버퍼링되지 않는 이유를 알아보세요. 감사합니다.

+0

'Modules :: run ("header");'과 비슷한 기능을 사용하여 문서에서 말한 것처럼 뷰를 부분적으로 렌더링하는 규칙입니다. 그런데 왜 그것을 사용하고 싶지 않습니까? –

답변

2

예, 정확히 설명 하겠지만, 실제 스크립트에서 수행 한 것을 구현하지 않으므로 흥미롭지 않습니다.

template_view.php ...

당신이 할 수있는 (그리고 나는 그것을 시도했기 때문에이 작동) 무엇 때문에 같은 template_view를 만드는 것입니다 ... 그리고 이것은 매우 아래로 절단

<?= isset($header) ? $header : ''; ?> 

<?= isset($content) ? $content : ''; ?> 

<?= isset($footer) ? $footer : ''; ?> 

그러면 페이지 섹션을 만들고 최종 출력물을 만듭니다. 그들이 당신의 예에서 정적 콘텐츠가로

Home.php 컨트롤러

class Home extends MX_Controller { 

    public function __construct() { 
     parent::__construct(); 
    } 

    public function index() { 
     // Build the Page Sections 
     $data['header'] = Modules::run("header"); 
     $data['footer'] = Modules::run("footer"); 
     $data['content'] = $this->load->view('home_view', '', true); 
     // Display the final Page 
     $this->load->view('template_view',$data); 
    } 
} 

그래서 당신은 이미 당신의 머리글과 바닥 글을 포함하는 템플릿을 만들 수 있습니다. 그런 다음 동적으로 채울 영역을 만듭니다.

이렇게하면 템플릿 모듈을 사용하여이 모든 것을 처리 할 수 ​​있습니다. 어느 것이 당신의 질문이 아니었지만 당신에게 생각을위한 음식을 줄 수 있기를 바랍니다.