Codeigniter在模板模型中传递搜索数据

时间:2013-11-03 11:31:04

标签: php codeigniter search

我正在尝试在我的网站上实现搜索功能。我面临一个无法通过模板传递数据的错误。我在搜索查询中得到一个空白页面,即使我尝试使用该网站包含的关键字进行搜索。我的默认控制器是页面。

主要布局视图:

<?php $this->load->view('templates/' .$subview); ?>

页面控制器。我无法从_search传递数据。

public function index() {
    // Fetch the page template
    $this->data['page'] = $this->page_m->get_by(array('slug' => (string) $this->uri->segment(1 , 'homepage')), TRUE); 
    count($this->data['page']) OR show_404(current_url());

    // Fetch the page data
    $method = '_' . $this->data['page']->template;
    if (method_exists($this, $method)) {
        $this->$method();
    }
    else {
        log_message('error', 'Could not load template ' . $method .' in file ' . __FILE__ . ' at line ' . __LINE__);
        show_error('Fail : ' . $method);
    }
    // Load the view

    $this->data['subview'] = $this->data['page']->template;
    $this->load->view('_main_layout', $this->data);
}
private function _page(){ // standart page template, just showing for how i do
    $this->load->model('page_m');
    $this->data['pages'] = $this->page_m->get();
}

private function _search(){
    $this->load->model('search_m'); // problem is here i think
}

搜索控制器,关键字功能:

 function keyword()
{
    $keyword = $this->input->post('keyword');
    $this->data['results'] = $this->search_m->search($keyword);
    $this->data['subview'] = 'search';
    $this->load->view('_main_layout',$this->data);
}

搜索模型:

 function search($keyword)
 {
    $this->db->like('body',$keyword);
    return parent::get();
 }

搜索视图:

  <?php if (count($results)): foreach ($results as $result): ?>
    <?php echo $result->title; ?>
    <?php echo $result->body; ?>
  <?php endforeach; endif; ?>

这给出了未定义的变量错误。如果编辑该搜索视图代码:

<?php if(isset($results)): ?>
<?php if (count($results)): foreach ($results as $result): ?>
<?php echo $result->title; ?>
<?php echo $result->body; ?>
<?php endforeach; endif; endif; ?>

我在此搜索查询后得到一个空白页,这意味着我认为我无法获得结果数据。 我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

我看到你加载模型,但没有调用函数。我看过去了吗?

您的搜索控制器看起来不像是从默认控制器继承,是吗?你正在削减我们需要看到的所有代码