2011-07-22 98 views
2

您好我正在嘗試使用Zend Jquery實現自動填充字段。我遵循教程從數組中獲取數據,並且擴展了代碼以訪問我的mysql表中的數據。Zend Jquery自動填充從數據庫填充

IndexController.php

$this->view->autocompleteElement = new ZendX_JQuery_Form_Element_AutoComplete('ac'); 
    $this->view->autocompleteElement->setLabel('Autocomplete'); 
    $this->view->autocompleteElement->setJQueryParam('source', '/index/city'); 

這將調用cityAction()

public function cityAction() 
{ 
    $results = Application_Model_City::search($this->_getParam('term')); 
    $this->_helper->json(array_values($results));   
} 

那麼我所說的模範城市

public static function search($term) 
{ 
    $region = new Application_Model_DbTable_Regions(); 

    $results = $region->getRegion($term); 

    return $results; 

} 

最後的地區DB模式

public function getRegion($term) 
{ 

    $select = $this->select()->from($this,'City') 
           ->where('City LIKE ? ',$term.'%'); 


    return $this->fetchAll($select)->toArray(); 

} 

現在,當我去自動完成字段它顯示的結果,但作爲UNDEFINED,我認爲它的東西做我發送數據返回到JSON幫手的方式。

我用螢火蟲,我可以看到數據被拉入以下格式。

[{「City」:「London」},{「City」:「Londonderry」},{「City」:「Longfield」},{「City」:「Longhope」},{「City」 「Longniddry」}]

我覺得這個格式不正確,請任何機構處理過嗎?

乾杯

Ĵ

回答

3

ZendX_JQuery_Form_Element_AutoComplete元件是代理自動完成視圖助手,這是一個代理到jQuery UI Autocomplete部件。

如果你讀了jQuery UI Autocomplete頁的概述,你會注意到:

本地數據可以是簡單的字符串數組,或者包含對象數組中的每一項,與任一標籤或價值財產或兩者。標籤屬性顯示在建議菜單中。在用戶從菜單中選擇一些內容後,該值將被插入到輸入元素中。如果只指定了一個屬性,它將用於兩個,例如。如果您僅提供值屬性,則該值也將用作標籤。

當使用字符串時,自動填充插件期望該字符串指向將返回JSON數據的URL資源。它可以位於同一臺主機上或不同的主機上(必須提供JSONP)。請求參數「term」被添加到該URL。 數據本身可以採用與上述本地數據相同的格式。

所以,要返回自動完成的JSON的結構應更象:

[{"label":"London","value":"London"},{"label":"Londonderry","value":"Londonderry"},{"label":"Longfield","value":"Longfield"}] 

祝你好運!

+0

好歡呼聲感謝的是非常有幫助的出色 –

0

解決了幾個小時的痛苦後的問題!

我修改下面的代碼,其中它訪問

public function getRegion($term) 

{

$select = $this->select()->from($this,'City') 
          ->where('City LIKE ? ',$term.'%'); 


return $this->fetchAll($select)->toArray(); 

}

我添加了一行SQL市的AS值

public function getRegion($term) 

數據{

$select = $this->select()->from($this,'City AS value') 
          ->where('City LIKE ? ',$term.'%'); 


return $this->fetchAll($select)->toArray(); 

}

這似乎已經奏效!

乾杯

Ĵ