Tengo un autocomplete que me funciona bien, pero el problema es que cuando guardo el registro, me dice que el dato tiene que ser un integer… "CLARO! tonto el formulario esta esperando un identificador de tipo integer que relacione la tabla tbl_evento con tbl_estructura. un dropdownlist quedaria demasiado grande, son muchos registros. =) entonces… como hago? aqui lo que tengo
Las tablas
tbl_evento tbl_estructura
id id
idestructura denominacion
numbredeevento
mi controller
public function actions()
{
return array(
'aclist'=>array(
'class'=>'application.extension.EAutoCompleteAction',
'model'=>'TblEstructura', //My model's class name
'attribute'=>'denominacion', //The attribute of the model i will search
),
);
}
mi _form
<?php echo $form->labelEx($model,'idestructura'); ?>
<?php
$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
'attribute'=>'idestructura',
'model'=>$model,
'sourceUrl'=>array('TblAsistencia/aclist'),
'name'=>'my_input_name',
'options'=>array(
'minLength'=>'3',
),
'htmlOptions'=>array(
'size'=>45,
'maxlength'=>45,
'style'=>"width:60%",
),
));
?>
<?php echo $form->error($model,'idestructura'); ?>
en extension/EAutoCompleteAction.php
<?php
class EAutoCompleteAction extends CAction
{
public $model;
public $attribute;
private $results = array();
public function run()
{
if(isset($this->model) && isset($this->attribute)) {
$criteria = new CDbCriteria();
$criteria->compare($this->attribute, $_GET['term'], true);
$model = new $this->model;
foreach($model->findAll($criteria) as $m)
{
$this->results[] = $m->{$this->attribute};
}
}
echo CJSON::encode($this->results);
}
}
?>
la cuestion es que debe haber alguna manera de que en el formulario guarde en ($model, ‘idestructura’) el idestructura que esta autocompletano no?