我是CodeIgniter的新手,到目前为止我一直很难学习。我大多数时候从不使用框架,这是我的第一次。
我理解MVC,但我真的不知道如何创建搜索,甚至只是一个基本的搜索:我只是希望有人在输入中发送一个单词并在我的数据库中搜索它(使用Ajax或不使用)并给出回答。谁能帮我提一些关于如何进行的想法?我理解在视图中我会放置我的div,输入等等,在控制器中我将调用我的函数来与我的模型进行交互。我正在努力将它们集成到CI上,因为视图实际上是通过控制器填充的,我相信我不能在视图中使用它的功能。
请帮忙吗?
答案 0 :(得分:17)
首先创建一个控制器,该控制器将处理搜索请求并显示搜索页面,然后是传递给模型进行数据库查找的搜索项(并将其发送回控制器)。控制器会将其传递给视图。
一个小例子;
控制器
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>
答案 1 :(得分:0)
在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 :(得分:0)
<强>模型强>
<?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>