ci的控制器和视图

Posted maoriaty

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ci的控制器和视图相关的知识,希望对你有一定的参考价值。

控制器代码如下:

<?php
/**
 * 1. 文件和控制器名首字母必须大小
 * 2. index()方法,总是在第二段为空时被调用
 * 3. routes.php中定义默认控制器$route[‘default_controller‘] = ‘blog‘;
 * 4. 有子目录控制器时,第一段代表目录,或者使用查询字符串d
 * 5. 如果方法名和类名相同,又没有__construct,则这个方法名相当于__construct,
 * 6. 使用保留的方法名时,会覆盖原来的方法
 */
class Blog extends CI_Controller
{
    public function index()
    {
        echo Hello World!;
    }
    public function comments()
    {
        echo Look at this!;
    }
    public function shoes($sandals=NULL, $id=NULL)
    {
        echo $sandals.<BR>;
        echo $id;
    }
    // 方法重映射,方法过滤,重写方法规则
    // public function _remap($method, $params = array())
    // {
    //     $method = ‘process_‘.$method;
    //     if (method_exists($this, $method))
    //     {
    //         return call_user_func_array(array($this, $method), $params);
    //     }
    //     show_404();
    // }
    // 输出处理,先写入缓存和设置http头后才执行此方法
    public function _output($output)
    {
        echo JABIN======.$output.jljklj;  // 先输出$output
        if($this->output->cache_expiration > 0)
        {
            $this->output->_write_cache($output);
        }
    }
    // 私有方法用private或者方法前加下划线, 只能内部访问
    private function _utility()
    {
        echo 4444;
    }
    // 构造函数,因为会覆盖父类__construct,所以需要执行一次父类的__construct
    public function __construct()
    {
        parent::__construct();
    }
    // 
}

 视图代码如下:

Blog.php控制器======
<?php
/**
 * 1. view加载的.php文件后缀可省略
 * 2. $data为对象时,对象中的变量会转为数组
* 3. 控制器调用视图方式:$this->load->view(‘view_name‘),多个视图自动合并
*/ class Blog extends CI_Controller { public function index() { $data[todo_list] = array(Clean House, Call Mom, Run Errands); $data[title] = YOUR TITLE; $data[heading] = MY REAL HEADING; $string = $this->load->view(blog/blogview, $data, TRUE); // 第三个参数设置结果返回字符串,默认为FALSE echo $string; } } blogview.php视图====== <html> <head> <title><?php echo $title; ?></title> </head> <body> <h1><?php echo $heading; ?></h1> <h3>Todo List</h3> <ul> <?php foreach ($todo_list as $tl): ?> <li><?php echo $tl; ?></li> <?php endforeach; ?> </ul> </body> </html>

 模型代码:

<?php
/**
 * 1. 文件名和类名一致,且首字母大写
 * 2. 控制器调用模型方式:$this->load->model(‘model_name‘, ‘other_name‘); // 第二个参数为别名
 * 3. 控制器使用模型方法:$this->model_name->method();
 * 4. 模型自动化加载,全局使用:application/config/autoload.php中添加到autoload数组中
 * 5. 链接数据库:手动:$this->load->database();自动1:自动化加载$autoload[‘libraries‘] = array(‘database‘);自动2:$this->load->model(‘model_name‘, ‘‘, TRUE);等等
 */
class Blog_model extends CI_model
{
    public $title;
    public $content;
    public $date;

    public function __construct()
    {
        parent::__construct();
        $this->load->database();
    }

    public function get_last_ten_entries()
    {
        $query = $this->db->get(entries, 10);
        return $query->result();
    }
    public function insert_entry()
    {
        $this->title = $_POST[title];
        $this->content = $_POST[content];
        $this->time = time();

        $this->db->insert(entries, $this);
    }
    public function update_entry()
    {
        $this->title = $_POST[title];
        $this->content = $_POST[content];
        $this->date = time();

        $this->db->update(entries, $this, array(id=>$_POST[id]));
    }
}

 

以上是关于ci的控制器和视图的主要内容,如果未能解决你的问题,请参考以下文章

CI框架3.x 之实现前后端分离

在 CI 中加载页眉和页脚视图

如果使用导航控制器,如何删除某些片段中的底部导航视图和工具栏?

从另一个片段的其他视图控制片段的视图

将值从模型传递到 CI 中的视图

CI框架 -- 在视图文件中使用 PHP 替代语法