首页 文章

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

提问于
浏览
0

我正在学习CodeIgniter中构建一个简单的ToDo列表 .

我有一个 Profiles 页面,应该向用户详细显示他检查过的所有项目 .

到目前为止,这是我的观点

<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();
}

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

2 回答

  • 2

    您只需在 $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);
    }
    
  • 1

    首先,我强烈建议您创建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和其他框架以便于编码和调试 . 如果组合模型中的所有函数,则无法轻松跟踪它们并结束项目,您将远离面向对象 .

相关问题