CodeIgniter在视图中加载两个控制器函数

时间:2016-12-06 20:02:19

标签: php codeigniter

我正在CodeIgniter中构建一个简单的ToDo列表,因为我只是学习它。

我有一个个人资料页面,应该显示用户详细信息+他检查过的所有项目。

这是我到目前为止的观点

<div class="profile_header">
        <?php foreach ($users as $user) { ?>
        <h4><?php echo $user['name']; ?></h4>

</div>

这是我的控制器

public function index(){
    $this->load->model('model_users');
    $query = $this->model_users->getUserInfo();
    $data['users'] = null;
    if($query){
        $data['users'] =  $query;
    }
    $this->load->view('profile/profile', $data);
}

我的模特

  public function getUserInfo(){
    $user_email = $this->session->userdata('email');
    $query = $this->db->get_where('users', array('email' => $user_email));
    return $query->result_array();
}

现在您可以看到我从用户表中选择用户信息并使用索引控制器功能将其发送到视图。现在,如果我想从tasks表中获取所有list_task并在页面上显示它,我假设我必须编写一个新的模型函数并在我的控制器中调用它,如{{1但是如何将它们发送到视图?

2 个答案:

答案 0 :(得分:2)

首先,我强烈建议您创建名称为用户和任务的2个模型。

在用户模型中,只需编写有关用户和用户表的代码。

<?php
    class User_model extends CI_Model {
        function __construct() {
            parent::__construct();
        }

        function getUserInfo(){ /*Fetch your users data*/ }
    }
?>

在任务模型中,只需编写有关任务和任务表的代码。

<?php
    class Tasks_model extends CI_Model {
        function __construct() {
            parent::__construct();
        }

        function getTasks($user){ /*Fetch tasks of user which specified by $user */ }
    }
?>

最后,使用2个模型的这些函数,填充控制器中的所有数据并将其发送到视图。

public function index(){
    $this->load->model('User_model');
    $this->load->model('Tasks_model');

    $queryOfUsers = $this->user_model->getUserInfo();
    $queryOfTasks = $this->tasks_model->getTasks();

    //manage/edit your data comes from database as you did above.
    //put it in data and send to view.

    $this->load->view('profile/profile', $data);
}

存在Codeigniter和其他框架,便于编码和调试。如果将模型中的所有函数组合在一起,就无法轻松跟踪它们并结束项目,那么您将远离面向对象。

答案 1 :(得分:1)

您只需在$data数组中添加另一个元素。

所以你的控制器看起来像这样:

public function index(){
    $this->load->model('model_users');
    $query = $this->model_users->getUserInfo();
    $data['users'] = null;
    if($query){
        $data['users'] =  $query;
    }

    // Load tasks (create a new method in your model)
    $data['tasks'] = $this->model_users->getUserTasks();

    $this->load->view('profile/profile', $data);
}