Codeigniter。使用_output函数处理输出不起作用

时间:2018-08-09 01:52:06

标签: php codeigniter

据我从documentation的了解,我正在尝试使用CI处理最终输出。

我的控制器:     

class Test extends CI_Controller
{

    public function index(){
        echo 'Hello World!!';
    }

    public function _output($output)
    {

        if($this->input->is_ajax_request()) {
            echo $output;
        }else{
            echo '<h1>Header</h1>';
            echo $output;
        }

    }


}

预期输出:

<h1>Header</h1>
Hello World!!

我得到了什么

Hello World!!
<h1>Header</h1>

发生的事情是显示index()的输出,然后使用$ output作为空字符串执行_output()

1 个答案:

答案 0 :(得分:2)

我承认,它的记载不充分。甚至听起来令人困惑。

但是您可以这样做:

public function index(){
    $this->output->set_output('Hello World!!');
}

public function _output($output)
{

    if($this->input->is_ajax_request()) {
        echo $output;
    }else{
        echo '<h1>Header</h1>';
        echo $output;
    }

}

我应该注意,我从未见过使用_output()方法。如果您对要实现的目标更加清楚,我也许可以提供更好的选择。


可能更好的选择:

function index() {
    $data_array['some_db_result'] = $this->somemodel->get_results();
    $this->template->render('Some heading', 'view_page1', $data_array); 
}

模板模型:

function render($heading, $view_page, $data) {
    if ($this->input->is_ajax_request()) {
        echo "<h1>{$heading}</h1>";
        echo $this->load->view($view_page, $data, true);
    } else {
        $data['heading'] = $heading;
        $this->load->view('header', $data);
        $this->load->view($view_page, $data);
        $this->load->view('footer', $data);
    }
}