【问题标题】:how to create MVC for search in Codeigniter?如何在 Codeigniter 中创建用于搜索的 MVC?
【发布时间】:2012-02-07 23:03:32
【问题描述】:

我是 CodeIgniter 的新手,到目前为止我很难学习。我大多从不使用框架,这是我的第一次。

我了解 MVC,但我真的不知道如何创建搜索,即使只是一个基本的搜索:我只是希望有人在输入中发送一个单词并在我的数据库中搜索它(是否使用 Ajax)并给出答案回来了。任何人都可以帮助我对我应该如何进行一些想法吗?我知道在视图中我将放置我的 div、输入等,在控制器中我将调用与我的模型交互的函数。我正在为如何将它们集成到 CI 上而苦苦挣扎,因为视图实际上是通过控制器填充的,我相信我不能在视图中使用 from 它的功能。

有什么帮助吗?

【问题讨论】:

标签: php codeigniter search


【解决方案1】:

在 CodeIgniter 中,您很可能会使用 post 方法而不是 get。 因此,在搜索表单中,请确保您使用的是 post 方法。

例如

查看:

<form action="<?=site_url('search_controller/search_function_in_controller')?>" method="post">
  search: <input type="text" name="keyword" />
  <input type="submit" value="Submit" />
</form> 

控制器

<?php
class Search_controller extends CI_Controller {

    public function search_function_in_controller()
    {
            $keyword = $_POST['keyword']; // you can also use $this->input->post('keyword');
            $this->load->model('Search_model');
            $data['search_result'] = $this->search_model->search_user($keyword);
            $this->load->view('search_result', $data);
    }
}
?>

【讨论】:

    【解决方案2】:

    首先创建一个控制器来处理搜索请求并显示搜索页面,然后将搜索项传递给模型以进行数据库查找(并将其发送回控制器)。控制器会将其传递给视图。

    一个小例子;

    控制者

    class Search extends CI_Controller {
    
        public function __construct()
        {
            parent::__construct();
    
            $this->load->helper('form');
    
            $this->load->model('search_model');
        }
    
        public function index()
        {
            $this->load->view('search_form');
        }
    
        public function execute_search()
        {
            // Retrieve the posted search term.
            $search_term = $this->input->post('search');
    
            // Use a model to retrieve the results.
            $data['results'] = $this->search_model->get_results($search_term);
    
            // Pass the results to the view.
            $this->load->view('search_results',$data);
        }
    
    }
    

    模型

    class Search_model extends CI_Model {
    
        public function get_results($search_term='default')
        {
            // Use the Active Record class for safer queries.
            $this->db->select('*');
            $this->db->from('members');
            $this->db->like('username',$search_term);
    
            // Execute the query.
            $query = $this->db->get();
    
            // Return the results.
            return $query->result_array();
        }
    
    }
    

    显示搜索表单的视图

    <?php
        echo form_open('search/execute_search');
    
        echo form_input(array('name'=>'search'));
    
        echo form_submit('search_submit','Submit');
    
    
    ?>
    

    显示结果的视图

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

    【讨论】:

      【解决方案3】:

      型号

      <?php
      class Searchmodel extends CI_Model
      {
      
          public function __construct() {
              parent::__construct();
          }
          function search($keyword)
          {
              $this->db->like('first_name',$keyword);
              $query  =   $this->db->get('user');
              return $query->result_array();
          }
      }
      
      ?>
      

      控制器

      <?php
      Class Search extends CI_Controller
      {
      
          public function __construct() {
              parent::__construct();
              $this->load->model('searchmodel');
      
          }
      
      
          function search_keyword()
          {
              $keyword=$this->input->post('submit');
              $data['users']=$this->searchmodel->search($keyword);
      
              $this->load->view('user/view', $data);
      
          }
      }
      ?>
      

      查看

      <form class="form-inline" role="form" action="<?php echo site_url().'/search/search_keyword';?>" method="post">
          <div class="form-group">
              <input type="text" class="form-control" name="search" placeholder="Search by firstname">
          </div>
          <button type="submit" class="btn btn-info" name="submit" >Search</button>
      </form>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-14
        • 2013-06-14
        • 1970-01-01
        • 1970-01-01
        • 2019-06-22
        • 1970-01-01
        相关资源
        最近更新 更多