TUTORIAL YII FRAMEWORK (CAPÍTULO 14) – CAMPO CON AUTOCOMPLETAR

La idea es tener un campo de texto en el que apenas empecemos a ingresar texto se nos liste una serie de resultados que hayan coincidido con ese texto, en la vista donde va a estar el campo debemos colocar el siguiente código:

if ($model->estado0!='')
{
$value=$model->estado0->nombre_estado;
}
else {
$value='';
}
echo $form->hiddenField($model, 'estado');
$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
'name'=>'estado',
'model'=>$model,
'value'=>$value,
'sourceUrl'=>$this->createUrl('ListarEstados'),
'options'=>array(
'minLength'=>'3',
'showAnim'=>'fold',
'select' => 'js:function(event, ui)
{ jQuery("#Contrato_estado").val(ui.item["id"]); }',
'search'=> 'js:function(event, ui)
{ jQuery("#Contrato_estado").val(0); }'
),
));

En el código anterior validamos que el campo no esté vacío en la base de datos, de estar vacío es que se está creando un nuevo registro o no se seleccionó ningún estado, luego creamos el campo de auto completar colocandole el nombre, el nombre del modelo, el valor por defecto, cantidad mínima para realizar la búsqueda y la función que guarda el id del campo seleccionado.

Copiamos la función ListarEstados en nuestro controlador:

public function actionListarEstados($term) {
$criteria = new CDbCriteria;
$criteria->condition = "LOWER(nombre_estado) like LOWER(:term)";</p>
$criteria->params = array(':term'=> '%'.$_GET['term'].'%');
$criteria->limit = 30;
$data = Estado::model()->findAll($criteria);
$arr = array();
foreach ($data as $item) {
$arr[] = array(
'id' => $item->id,
'value' => $item->nombre_estado,
'label' => $item->nombre_estado,
);
}
echo CJSON::encode($arr);
}

En la función de arriba definimos la condición que va a tener nuestro query, en nuestro caso buscaremos por nombre_estado indiferentemente minúsculas y mayúsculas utilizando un like ‘% %’, la máxima cantidad de resultados será de 30, los datos provienen del modelo Estado, el campo a guardar es el id y el que mostraremos es el nombre del estado.

Hay que darle permisos a los usuarios para utilizar la acción ListarEstados.

About these ads

Publicado el 27/01/2012 en Yii Framework. Añade a favoritos el enlace permanente. Deja un comentario.

Tu Opinión es Importante, Comenta!

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.