2016-10-09 82 views
0

我有HMVC codeigniter項目,我想創建自動完成字段,但無論我嘗試它只是不會工作,我使用CI 3,PHP 5.5 +如何在HMVC codeigniter上自動完成?

這是我的控制器(測試):

function getData() { 

    $name = $this->uri->segment(3); 
    $query = $this->ex_model->getThisData()->like('name', $name)->get(); 

    foreach ($query->result() as $q) { 
     $res['query'] = $name; 
     $res['suggestions'][] = array(
      'value'=>$q->name, 
      'gender'=>$q->gender, 
      'id'=>$q->id, 
     ); 
    } 
    echo json_encode($res); 
} 

因此,我的模型(ex_model):

function getThisData(){ 
    $this->db->select('name'); 
    $this->db->from('table1'); 
    $this->db->join('table2', 'table1.id= table2.id'); 
    $query = $this->db->get(); 
    return $query->row_array(); 
} 

最後,我的觀點+ JavaScript的:

<input type="search" id="data1" placeholder="Input Name..." class="form-control border-input"> 

var site = "<?php echo base_url();?>"; 
$(function(){ 

    $('#data1').autocomplete({ 
     serviceURL: site+'/test/getData', 

     onSelect:function(suggestion){ 
      $('#id').val(''+suggestion.id); 
      $('#gender').val(''+suggestion.gender); 
     } 
    }); 
}); 

而且我的網址那一刻:

http://localhost/myproject/admin/test 

我不知道HMVC CI工程URI段如何,我試着用段(4)和(5)仍然不顯示自動完成。

沒有錯誤,但輸入字段的數據不會顯示,我想知道我是否應該修復「$ this-> uri-> segment(3)」或我的JavaScript或其他。

+0

什麼不工作是什麼茹得到? – devpro

+0

@devpro,沒有錯誤,但輸入字段上的數據不會顯示,我想知道我是否應該修復「$ this-> uri-> segment(3)」或我的JavaScript或其他 – Teletubbies

+0

Chk答案將幫助你 – devpro

回答

0

根據您的網址:

http://localhost/myproject/admin/test/getData 

你不能得到值段(4)和(5)。

您需要使用這樣的:

$this->uri->segment(1); // admin 
$this->uri->segment(2); // test 
$this->uri->segment(3); // getData 

您也可以按照用戶手冊:https://www.codeigniter.com/userguide3/libraries/uri.html

根據手動和你的網址:

您段應該是:

1- admin 
2- test 
3- getData 
+0

非常感謝,但我應該怎麼做我的JavaScript?我應該修復'base_url'還是'serviceURL'?數據仍然不會顯示btw – Teletubbies

+0

@teletubbies使用段作爲你使用這個var site =「<?php echo base_url();?>」; – devpro

+0

仍然不會顯示輸入字段的數據列表,我遵循一些教程,沒有使用Wiredezignz HMVC擴展雖然 – Teletubbies

0

例如:CI中的段主域名後,開始http://localhost/myproject/admin/test/getData這裏http://localhost/myproject是主域,以便段將從管理開始。 這裏管理是1號線段測試是第二個和getData是第三位。

+0

感謝您的答案,但主要問題是自動完成將不會顯示輸入字段 – Teletubbies

+0

輸出是什麼<?php echo base_url();?>。我的意思是,管理員包含在base_url()中? –

+0

localhost/myproject,我使用wiredezignz HMVC擴展btw – Teletubbies

0

而不檢查JS代碼,您的控制器和模型不適合:

  1. 您的模型已經返回數組(或FALSE),所以沒有必要

    $query = $this->ex_model->getThisData()->like('name', $name)->get(); 
    

它應該是:

$query = $this->ex_model->getThisData(); 
  1. 您正試圖通過參數來篩選查詢,所以你需要傳遞給模型:

    $name = $this->uri->segment(4) ? $this->uri->segment(4) : null; 
    
    $query = $this->ex_model->getThisData($name); 
    
  2. 現在你的模型的方法的代碼應該看起來像:

    public function getThisData($name) 
    { 
        if ($name != null) { 
         $this->db->select('name');//should this be '*'? 
         $this->db->from('table1'); 
         $this->db->where('name', $name) 
         $this->db->join('table2', 'table1.id= table2.id'); 
         $query = $this->db->get(); 
         return $query->result_array();//remember if you return array or object and you are probably looking for result, but not for single row here? 
        } 
        //case when $name value from controller is null 
        return false; 
    } 
    
+0

謝謝你的答案,我試過但自動完成仍然不會工作,我只是對我的項目做了一些更改,所以我的網址如下所示:http:// localhost/myproject/admin/test 我應該將uri段更改爲3嗎? – Teletubbies