Codeigniter:在null上调用成员函数视图()

时间:2016-11-21 05:51:38

标签: php codeigniter

我刚刚使用codeigniter框架启动了一个简单的php项目,我的步骤如下。

  1. 创建名为user.php的控制器。

  2. 之后在子目录articles_list.php内创建了一个视图public

  3. 在控制器中加载视图后。

  4. 但是致命错误调用null上的成员函数view()。 为此,我使用3.2.1版本的codeigniter框架。

    我是这个框架的初学者。请告诉我我错在哪里。

    user.php(Controller)

    <?php
    class User extends MY_Controller{
    public function __construct() {        
    parent::__construct();
    }
    public function index(){
        echo "list articles";
        $this->load->view('public/articles_list');
    }
    }
    ?> 
    

    articles_list.php(查看)

    <html>
    <head>
    <title>Article List</title>
    <!--<link rel="stylesheet" type="text/css" href="http://localhost/codeigniter/assets/css/bootstrap.min.css">-->
    </head>
    <body>
    <p>hello</p>
    </body>
    
    </html>
    

    提前致谢。

    这样的错误..

    列出文章 遇到PHP错误

    Severity: Notice
    
    Message: Undefined property: User::$load
    
    Filename: controllers/user.php
    
    Line Number: 8
    
    Backtrace:
    
    File: C:\xampp\htdocs\codeigniter\application\controllers\user.php
    Line: 8
    Function: _error_handler
    
    File: C:\xampp\htdocs\codeigniter\index.php
    Line: 315
    Function: require_once
    
    
    Fatal error: Call to a member function view() on null in C:\xampp\htdocs\codeigniter\application\controllers\user.php on line 8
    A PHP Error was encountered
    
    Severity: Error
    
    Message: Call to a member function view() on null
    
    Filename: controllers/user.php
    
    Line Number: 8
    
    Backtrace:
    

5 个答案:

答案 0 :(得分:0)

控制器

<?php
    class User extends CI_Controller {

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

        public function show($id) {
            $this->load->model('User_model');
            $list = $this->User_model->get_list($id);
            $data['detail'] = list;
            $this->load->view('list', $data);
        }
    }
?>

模特

<?php
    class User_model extends CI_Model {
        public function __construct()   {
          $this->load->database(); 
        }

        public function get_list($id) {
           if($id != FALSE) {
               $query = $this->db->get_where('list', array('id' => $id));
               return $query->result();
           }
           else {
               return FALSE;
           }
        }
    }
?>

视图

<?php
    foreach($detail as $row){
        <?php print $row->field1; ?>
        <?php print $row->field2; ?>
    }
?>

了解更多信息

codeigniter views

codeigniter models

答案 1 :(得分:0)

将您的控制器另存为User.php。请注意, U 是大写的。在codeigniter 3.1.0及以上版本中,需要保存控制器和模型的文件名,如 U ser.php。 同时将 MY_Controller 更改为 CI_Controller

希望这会有所帮助:)

答案 2 :(得分:0)

实际上,MY_Controller代码应类似于:-

<?php 

class MY_Controller extends CI_Controller
{
    public function __construct()
    {
        // echo "Testing";
        parent::__construct();
    }
}
?>

实际上,MY_Controller代码应类似于:-

答案 3 :(得分:0)

如果您使用更新Ci而不是尝试:

function __construct()
{
    parent::__construct();
}

答案 4 :(得分:0)

您必须将该模型的名称添加到配置>自动加载文件中。