我想知道,如何在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