我想知道,如何在cakephp 2中创建自动完成。我在网上阅读,但我找不到有关我的部分的相关信息。自动完成Ajax上cakephp 2
当前我先在控制器中加载所有数据,分配给视图,然后从所有数据开始自动完成。但由于数据可能很多,这样效率不高,需要时间。我怎么能过滤控制器功能加载只关键字我输入类型?我能够做到这一点PHP的水平,但我dunt知道如何介绍CakePHP 2.
这里我介绍CakePHP 2现行规范:
ProductController的这个加载所有产品的专卖店:
$storeproducts = $this->get_storeproduct_autocomplete($sale['Sale']['store_id']);
这是我的看法,输入:
<input type="text" class="form-control" placeholder="Barcode/Nama barang..." name="search_keyword" id="searchProduct" />
,并在视图的底部我把剧本:
$(function() {
var availableProduct = [
<?php
foreach ($products as $spro):
$label = addslashes($spro['Product']['barcode'].' '.$spro['Product']['product_name']);
?>
{ label:"<?php echo $label;?>", value:"<?php echo $spro['Product']['barcode'];?>" },
<?php
endforeach;
unset($spro);
?>
];
$("#searchProduct").autocomplete({
source: availableProduct,
delay: 200,
minLength: 2
});
});
通过使用这些代码,自动完成工作,但它首先加载整个记录,而不是我输入的过滤器。并且输入字段用条形码填充,或者我设置的任何值,但是我希望它显示产品名称,并且当我提交时,它具有产品ID,我们可以这样做吗?
编辑1: 更新我的控制器,创建新的函数来做到这一点通过AJAX调用数据过滤器:
public function ajax_get_autocomplete_storeproduct($keyword, $store_id)
{
$result = array();
$storeproducts = $this->StoreProduct->find('all', array(
'fields'=>array('StoreProduct.id', 'StoreProduct.stok'),
'conditions'=>array('Product.deleted'=>0,
'StoreProduct.stok >'=>0,
'StoreProduct.store_id'=>$store_id,
'OR'=>array(
'Product.barcode LIKE' => "%$keyword%",
'Product.product_name LIKE' => "%$keyword%",
)
)));
//how to set the value to view ?
return new CakeResponse(array('body'=>json_encode($result)));
}
如何设置的关键:从数值控制器在阿贾克斯数据响应?
您可以使用自动完成引导是 –
有文档页面是什么? – Gabriel