2011-03-27 89 views
0

大家好,我发布这个,因为我无法弄清楚。 基本上我有一个搜索页面,我有一个Zend_Dojo_Form_Element_Combobox。我想为这个元素实现自动完成功能,但它不起作用。搜索功能正常工作,我只需键入文本。Zend_Dojo_Form_Element_ComboBox自动完成不工作

我在想,我的问题是在我的控制器中设置autocompleteAction,我会说实话,我不知道这是如何设置的。由于我是Zend Framework的新手,我在网上找到的教程和我正在阅读的一本书的格式不同,所以我无法理解我的头脑。

public function autocompleteAction() 
{ 
// disable layout and view rendering 
$this->_helper->layout->disableLayout(); 
$this->getHelper('viewRenderer')->setNoRender(true); 

// get list of breed names from the breeds table 
$qry = Doctrine_Query::create() 
       ->select('b.breed') 
       ->from('PetManager_Model_Breeds b'); 

       $result=$qry->fetchArray(); 


    //generate and return JSON string 
    $data = new Zend_Dojo_Data('breed',$result); 
    echo $data->toJson(); 


} 

万一它是我的实现这里的元素本身是我的表单类的代码提取。

// Create a autocomplete inout for breed name 
    $breedName = new Zend_Dojo_Form_Element_ComboBox('breed'); 
    $breedName->setLabel('Search Breeed Names'); 
    $breedName->setOptions(array(
     'autocomplete'=>'false', 
    'hasDownArrow'=>'true', 
    'storeID'=>'breedStore', 
    'storeType'=>'dojox.data.QueryReadStore', 
    'storeParams'=>array('url'=>"/breeds/breed/autocomplete"), 
    'dijitParams' =>array('searchAttr' =>'breed'))) 
     ->setRequired(true) 
     ->addValidator('NotEmpty',true) 
     ->addFilter('HtmlEntities') 
     ->addFilter('StringToLower') 
     ->addFilter('StringTrim'); 

任何和所有的帮助非常感谢。

I.S.

回答

0

我想你必须添加一个标签和特定的元数据到你的Zend_Dojo_Data对象以便与QueryReadStore一起工作。类似这样的:

//generate and return JSON string 
$data = new Zend_Dojo_Data('breed', $result); 
$data->setLabel('breed'); 
$data->setMetadata('numRows', count($result)); 
echo $data->toJson();