Ejemplo donde se autocompleta la información de productos, en una factura de compras.
CompraController.php*
public function accessRules()
{
return array(
array('allow', // allow all users to perform 'index' and 'view' actions
'actions'=>array('index','view','autocomplete'), //dar permiso al autocomplete
'users'=>array('*'),
),
.......
public function actionAutocomplete($term)
{
$criteria = new CDbCriteria;
$criteria->compare('LOWER(Descripcion)', strtolower($_GET['term']), true);
$criteria->order = 'Descripcion';
$criteria->limit = 30;
$data = Productos::model()->findAll($criteria); //Productos es mi modelo
if (!empty($data))
{
$arr = array();
foreach ($data as $item) {
$arr[] = array(
'id' => $item->CodProducto,
'value' => $item->Descripcion,
'label' => array($item->Descripcion, $item->PreVenta), //para guardar varios datos y luego tomarlos en la vista.
);
}
}
else
{
$arr = array();
$arr[] = array(
'id' => '',
'value' => 'No se han encontrado resultados para su búsqueda',
'label' => 'No se han encontrado resultados para su búsqueda',
);
}
echo CJSON::encode($arr);
}
_form.php*
<?php $this->widget(‘zii.widgets.jui.CJuiAutoComplete’,
array(
'id'=>'CodProducto',
'name'=>'Descripcion', // Nombre para el campo de autocompletar
'model'=>$model_detalle,
'value'=>$model_detalle->isNewRecord ? '' : $model_detalle->Detallecompra->CodProducto.' ',
'source'=>$this->createUrl('compra/autocomplete'), // URL que genera el conjunto de datos
'options'=> array(
'showAnim'=>'fold',
'size'=>'30',
'minLength'=>'1', // Minimo de caracteres que hay que digitar antes de relizar la busqueda
'select'=>"js:function(event, ui) {
$('#Detallecompra_Precio').val(ui.item.label[1]); // tomamos la información del arreglo
}"
),
'htmlOptions'=> array(
'size'=>40,
'placeholder'=>'Producto',
'title'=>'Indique el producto.'
),
));
?>