我正在编写一个函数来对搜索元素进行自动完成,但是当我搜索特定名称时,自动完成不会按字母顺序出现,这是我的模型和控制器中的代码。
这是我的模型我已经取消注释了订单行,因为它显示了选择时没有任何内容的下拉菜单,但是点击它可以看到没有标签/名称回显的id。像这样的某些代码给了我null值。例如
{
public function getName($term)
$select = $this ->select($term);
$select ->where('name LIKE ?', '%'.$name)
->order('name ASC')
} ->limit(0,20);
public function searchEnterprise($term)
{
$select = $this ->select()
->where('name LIKE ?', $term . '%')
//->order('name')
->limit(10);
return $this->fetchAll($select);
}
//控制器
public function acEnterpriseAction()
{
$phrase = $this->getRequest()->getParam('phrase');
$mdlEnt = new Model_Enterprise();
$results = $mdlEnt->searchEnterprise($term);
$arr_rtn = array();
foreach($results as $result)
{
$myarr = array( 'label' => $result->name,
'value' => $result->id,
'id' => $result->id
);
array_push($arr_rtn, $myarr);
}
echo Zend_Json::encode($arr_rtn);
}
答案 0 :(得分:1)
尝试按名称命名json:
foreach($results as $result)
{
$myarr[$result->name] = array('label' => $result->name,
'value' => $result->id,
'id' => $result->id
);
}
ksort($myarr);
foreach($myarr as $name => $arr){
array_push($arr_rtn, $arr);
}
echo Zend_Json::encode($arr_rtn);
并使用好的参数
调用searchEnterprise
$results = $mdlEnt->searchEnterprise($phrase);
答案 1 :(得分:0)
我在Jquery中给出了自动完成的链接,你可以引用Jquery并对Java Script进行一些更改。 Jquery autocomplete example