2012-02-04 4 views
4

У меня есть функция, которая обрабатывает боковую панель веб-страницы в codeigniter.Codeigniter View и echo

следующим образом:

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, чтобы сохранить этот контент и вывести его позже в структуре. Это похоже на парковку автомобилей на стоянке, решение о том, какие автомобили будут идти первым, а затем отправить автомобили на свет только после того, как вы завершили заказ. Так же, как вы не хотите, чтобы какие-либо автомобили пробирались в линию, когда вы не смотрите, вы не хотите «эхо»/'print', так как это« не в порядке ». –

+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, он не отображается сразу, а вместо него появляется буфер и отображается позже. Чтобы преодолеть, если текст, который вы хотите отобразить между ними, является статическим, сделайте его частью второго или третьего представления. В противном случае сделайте его переменной 2-го или 3-го представления и передайте текст как переменную вида.

+0

Okkey, я понял это. Но могу ли я сделать что-то вроде 'echo $ this-> load-> view (" myview "," ", TRUE);' Есть ли проблема с производительностью при выполнении этого? – Red

+0

Да, это альтернативный способ. AFAIK, который зависит от параметров output_buffering в php.ini. – LeleDumbo