在 CodeIgniter 中搜索表单

Search form in CodeIgniter

我在 CodeIgniter 中创建 search 表单时遇到问题 - 它显示如下错误:

A PHP Error was encountered

Severity: Notice

Message: Undefined property: Login::$membership_model

Filename: controllers/login.php

Line Number: 12

Backtrace:

File: C:\xampp\htdocs\Project5_1\CodeIgniter\application\controllers\login.php Line: 12 Function: _error_handler

File: C:\xampp\htdocs\Project5_1\CodeIgniter\index.php Line: 315 Function: require_once

Fatal error: Call to a member function getSearchBook() on null in C:\xampp\htdocs\Project5_1\CodeIgniter\application\controllers\login.php on line 12 A PHP Error was encountered

Severity: Error

Message: Call to a member function getSearchBook() on null

Filename: controllers/login.php

Line Number: 12

Backtrace:

我的控制器页面是:

<?php 
    class Login extends CI_Controller{
        function search(){
            $searchBook = $this->input->post('searchBook');
            $data = $this->membership_model->getSearchBook($seachBook);
            $this->load->view('main_content',$data);    
        }
?>

我的模型页面是:

    class Membership_model extends CI_Model{
    function getSearchBook($searchBook) {
            $this->db->select('*');
            $this->db->from('book');
            $this->db->like('author',$searchBook);
            return $query->result();
    }
}

我的 main_content.php 是:

    <?php
        echo form_open('login/search');
        echo form_input('searchBook','Search Book', 'id="searchBook"');
        echo form_submit('submit', 'Search');
        echo form_close();
    ?>

    <table><th>Title</th></table>
    <div>
        <?php
            // List up all results.
            foreach ($results as $val)
            {
                echo $val['title'];
            }
        ?>
    </div>
    </body>

我已经有很长时间没有使用 CodeIgniter 了,但据我所知,您没有在 Login class 构造函数中加载模型。这就是为什么您会收到错误的这两部分:

Message: Undefined property: Login::$membership_model

Message: Call to a member function getSearchBook() on null

如果您尚未加载 membership_model 模型,则登录 class 中不存在 属性 或函数。

在我的脑海中,我认为它需要在您的登录控制器中是这样的:

<?php 
    class Login extends CI_Controller{

        function __construct()
        {
            parent::__construct();
            $this->load->model('membership_model');
        }

        function search(){
            $searchBook = $this->input->post('searchBook');
            $data = $this->membership_model->getSearchBook($seachBook);
            $this->load->view('main_content',$data);    
        }
?>