CI控制器调用内部方法并加载对应模板的做法

当我打开链接:http://localhost/3g/index/open/a/b?

from=timeline后,推断链接中的from是否等于timeline,假设等于timeline。那么就调用控制器内部的timeline方法,并加载timeline.php这个模板。

class Index extends CI_Controller {
    function __construct() {
        parent::__construct();
    }

    public function open($a=0,$b=0) {
        if ($_GET['from'] == 'timeline') {
            $this -> timeline($a);
            die;
        } else {
            $data['b'] = $b;
            $this -> load -> view('3g/index/open',$data);
        }
    }
    public function timeline($a=0) {
        $data['a'] = $a;
        $this -> load -> view('3g/index/timeline',$data);
    }
}
此时输出的页面一片空白,并没有加载timeline.php这个模板。正确的做法是:

class Index extends CI_Controller {
    function __construct() {
        parent::__construct();
    }

    public function open($a=0,$b=0) {
        if ($_GET['from'] == 'timeline') {
            $this -> timeline($a);
            die;
        } else {
            $data['b'] = $b;
            $this -> load -> view('3g/index/open',$data);
        }
    }
    public function timeline($a=0) {
        $data['a'] = $a;
        echo $this -> load -> view('3g/index/timeline',$data,true);die;
    }
}

获取视图内容

view函数第三个可选參数能够改变函数的行为,让数据作为字符串返回而不是发送到浏览器。假设想用其他方式对数据进一步处理,这样做非常实用。假设将view第三个參数设置为true(布尔)则函数返回数据。view函数缺省行为是 false, 将数据发送到浏览器。

假设想返回数据。记得将它赋到一个变量中:

$string = $this->load->view('myfile', '', true);

样例:有些情况下。你并不想直接输出视图,而是只想得到视图的内容以备后用。

那么能够參考例如以下代码。

view方法中的第三个參数表示不输出视图,而仅仅是将结果返回给一个变量。



原文地址:https://www.cnblogs.com/lcchuguo/p/5076708.html