4

这是我的控制器

<?php
class Site extends CI_Controller{
    public function index(){    
    $this->load->view('home');
    }
}
?>

这是我的模型

<?php

class AdminModel extends CI_Model{

//function to get all the questions 

    function getAllQA(){
        $result=$this->db->get('question');
        if($result->num_rows()>0){ //this checks if the result has something if blank means query didn't get anything from the database
        return $result;
        }
        else{
        return false;
        }
    }
}
?>

这是我的观点页面

<form method="get" action="">
        <div id="container">    
            <?php
                $this->load->model('adminmodel');
                if($result=$this->adminmodel->getAllQA()){
                    foreach($result->result() as $rows){
                        echo $rows->question;
                        echo $rows->option1;
                    }
                }
                else{
                    echo "No question found";
                }
            ?>
        </div>
    </form>

因此,我在名为 home.php 页面的视图中调用模型,但它显示错误调用 So 中非对象上的成员函数 getAllQA() 但是当我在控制器中调用模型时它工作正常但为什么它显示错误时正在加载并调用视图页面中的方法

4

3 回答 3

2

在控制器的构造函数中加载模型

your controller should be like this

<?php
  class Site extends CI_Controller{
    function __construct()
    {
        parent::__construct();
        $this->load->model('adminmodel');

    }
    //if you want to pass data or records from database to view do as blow code
    public function index()
    {    
        //define an empty array
        $data = array();
        $records = $this->adminmodel-> getAllQA();

        $data['records'] = $records;

        //pass the data to view you can access your query data inside your view as $records
        $this->load->view('home',$data);
    }
  }
?>
于 2013-09-08T09:56:14.630 回答
1

您不应该从视图文件中加载模型。Codeigniter 是一个 MVC 框架,这意味着与模型的所有通信都应由控制器处理。

这不起作用的技术原因可能是视图文件不是 php 类,因此 $this 不存在。无论如何,如果您想做这样的事情,请不要使用 codeigniter!

于 2013-09-07T06:37:33.830 回答
0

不确定你是否做到了。通常你从控制器中调用你的模型。在您的情况下,它将是:

    class Site extends CI_Controller{
      public function index(){    
        // load your model
        $this->load->model('adminmodel');
        // do your fancy stuff
        $data['allQA'] = $this->adminmodel->getAllQA();
        // here you can pass additional data e.g.
        $data['userdata'] = $this->adminmodel>getuserinfo();
        // pass data from controller --> view
        $this->load->view('home',$data);
      }
    }

您可以通过分别访问 $allQA 或 $userdata 来访问视图文件中的数据。例如

foreach ($allQA as $qa){
  echo $qa->question . "<br>" . $qa->option . "<br>";
}

或 div 内的某处

 <div class="userbadge">
   <?php echo $userdata; ?>
</div>
于 2013-09-07T13:58:35.930 回答