Yii Framework Forum: Autocompletar CJuiAutoComplete - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Autocompletar CJuiAutoComplete Problema con CJuiAutoComplete Rate Topic: -----

#1 User is offline   lokyizp 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 18-May 11

Posted 03 January 2012 - 05:14 PM

Buenas tardes, he implementado un autocompletar por medio de CJuiAutoComplete despliega bien los valores cuando la consulta da como resultado menos o igual a 10 resultados, sin embargo cuando hay mas de 10 resultados en base e datos CJuiAutoComplete continua desplegando solo 10

En mi vista tengo:
<?php echo $form->hiddenField($model,'id_proveedor',array()); ?>

        <?php 
 $this->widget('zii.widgets.jui.CJuiAutoComplete',
    array(
      'model'=>$model,
      'attribute'=>'prov_nombre',
      'source'=>$this->createUrl('/proveedor/patrocinado/autocompleteFinal'),
      'options'=>
         array(
               'showAnim'=>'fold',
			   'size'=>'30',
			   'minLength'=>'3',
               'select'=>"js:function(event, ui) {
                  								$('#Patrocinado_id_proveedor').val(ui.item.id);
                         }"
                ),
				'htmlOptions'=>array(
          'size'=>60,
		  'placeholder'=>'Buscar Proveedor...',
          'maxlength'=>60,
        ),
    )); 


Controlador :

		public function actionAutocompleteFinal () {
  if (isset($_GET['term'])) {
  
    $criteria=new CDbCriteria;
	$criteria->alias = "prov";
    $criteria->condition = "prov.razon_social like '%".$_GET['term']."%'";
	$criteria->order='nombre';
	$criteria->limit = 30;
   $dataProvider = new CActiveDataProvider(get_class(TblProveedor::model()), array(
'criteria'=>$criteria,
));
    $proveedores = $dataProvider->getData();
    $return_array = array();
    foreach($proveedores as $proveedor) {
      $return_array[] = array(
                    'label'=>$proveedor->razon_social,
                    'value'=>$proveedor->nombre,
                    'id'=>$proveedor->id_proveedor,
                    );
    }
    echo CJSON::encode($return_array);
  }
}

Espero alguien me pueda ayudar , he buscado pero no se a que se debe a que solo me muestre hasta 10 resultados cuando me he cercioro que en base de datos con los mismos criterios de consulta tengo hasta 50 resultados o mas
0

#2 User is offline   Jack Fiallos 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 256
  • Joined: 15-October 09
  • Location:Mexico

Posted 04 January 2012 - 12:17 PM

Ok.. creo que tu problema es porque estas utilizando un CActiveDataProvider.. y por omision esa clase solamente obtiene 10 registros por cada consulta.. eso a menos que le indiques lo contrario.. con pagination .. pero ese es otro tema en al que no deberias entrar..

Para solucionarlo simplemente no uses CActiveDataProvider y hazlo directamente con la clase del modelo.. ej:

/* Esto ya no es necesario */
//$dataProvider = new CActiveDataProvider(get_class(TblProveedor::model()), array(
//   'criteria'=>$criteria,
//));
//$proveedores = $dataProvider->getData();

// Esta es la forma en que deberias hacerlo
$proveedores = TblProveedor::model()->findAll($criteria);


Espero te sirva..
Celestic Dev Team
Yii Open Source Project Manager
0

#3 User is offline   lokyizp 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 18-May 11

Posted 08 January 2012 - 11:41 PM

View PostJack Fiallos, on 04 January 2012 - 12:17 PM, said:

Ok.. creo que tu problema es porque estas utilizando un CActiveDataProvider.. y por omision esa clase solamente obtiene 10 registros por cada consulta.. eso a menos que le indiques lo contrario.. con pagination .. pero ese es otro tema en al que no deberias entrar..

Para solucionarlo simplemente no uses CActiveDataProvider y hazlo directamente con la clase del modelo.. ej:

/* Esto ya no es necesario */
//$dataProvider = new CActiveDataProvider(get_class(TblProveedor::model()), array(
//   'criteria'=>$criteria,
//));
//$proveedores = $dataProvider->getData();

// Esta es la forma en que deberias hacerlo
$proveedores = TblProveedor::model()->findAll($criteria);


Espero te sirva..

Muchas gracias funciona a la perfección
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users