Zend_Dojo_Form_Element_ComboBox自动完成无法正常工作

时间:2011-03-27 20:47:17

标签: autocomplete dojo zend-form

大家好我发布这篇文章,因为我无法理解。 基本上我有一个搜索页面,其中有一个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。

1 个答案:

答案 0 :(得分: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();