2012-02-04 2 views
4

나는 codeigniter에서 웹 페이지의 사이드 바를 처리하는 기능이 있습니다.Codeigniter보기 및 반향

function process_sidebar() 
{ 
$this->load->view("first_access"); // ------------(1) 
$this->load->view("second_access");// --------------(2) 
echo "Here i want to show some data after loading view second_access"; //pls note here --(3) 

$this->load->view("third_access"); // --------------------(4) 
$this->load->view("fourth_access"); //-------------------------(5) 

} 

주문 번호를 확인하시기 바랍니다,하지만 문제는 CodeIgniter의 순서를 유지되지 않습니다

는 다음과 같다.

난이 어떻게 극복 할 수 .. 마지막 뷰 렌더링 먼저 echo 부를 도시?

감사합니다.

+3

때'echo' /'print', 당신은 브라우저가 실제로 볼 것입니다 출력 버퍼에 직접 그 출력을 보내는 (빨간 빛에 일렬로 늘어선 자동차와 같이 생각하십시오). CodeIgniter 뷰에서는 CI가 해당 내용을 저장하고 나중에 구조 내에서 출력하도록 지시합니다. 이것은 주차장에 차를 주차하는 것과 유사합니다. 차를 먼저 결정한 다음 주문을 완료 한 후에 만 ​​차를 보내십시오. 찾고 있지 않을 때 어떤 자동차가 줄에 몰래 들어가는 것을 원하지 않는 것과 마찬가지로, "비 순차적"이기 때문에 그런 식으로 '에코'/ '인쇄'하고 싶지는 않습니다. –

+0

@ Jared 감사합니다, 좋은 설명이었습니다. – Red

답변

10

당신은 append_output()보다는 echo로 할 것입니다 :

<?php 
function process_sidebar() 
{ 
    $this->load->view("first_access"); // ------------(1) 
    $this->load->view("second_access");// --------------(2) 
    $this->output->append_output("Here i want to show some data after loading view second_access"); //pls note here --(3) 
    $this->load->view("third_access"); // --------------------(4) 
    $this->load->view("fourth_access"); //-------------------------(5) 
} 
0

이것이 바로 CodeIgniter에서의 view 작동 방식입니다. 즉, 즉시 표시되는 대신 버퍼링되어 나중에 함께 표시됩니다. 극복하려면 사이에 표시 할 텍스트가 정적 인 경우 두 번째 또는 세 번째보기의 일부로 만듭니다. 그렇지 않으면 두 번째 또는 세 번째 뷰의 변수로 만들고 뷰 변수로 텍스트를 전달합니다.

+0

Okkey, 나는 그것을 깨달았다. 하지만 'echo $ this-> load-> view ("myview", "", TRUE)와 같은 작업을 수행 할 수 있습니까? 이렇게하는 동안 성능 문제가 있습니까? – Red

+0

네, 그건 다른 방법입니다. AFAIK, php.ini의 output_buffering 설정에 따라 다릅니다. – LeleDumbo