如果这已经存在,我道歉但我无法让它发挥作用.. 我需要显示名称并将id存储在我的表中。这些名称来自其他型号(表)。当我在镀铬网络检查员检查elts时,我得到了名字和id。 但是值不是不可见的..但是当我试图点击它们时它们正在填充它带有id的警报......
任何人都可以帮助我看到名字 - 谢谢你的帮助
我的_form.php是这样的:
<div class="row">
<?php echo $form->labelEx($typeModel,'benefit_type'); ?>
<?php
$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
'attribute'=>'name',
'model'=>$typeModel,
'sourceUrl'=>array('benefit/benefit_type_list'),
'value'=>'Please select',
'name'=>'name',
'id'=>'id',
'options'=>array(
'minLength'=>'0',
'select'=>"js:function(event, ui) {
alert(ui.item.id);
// $('#organisation_id').val(ui.item.id);
}",
),
'htmlOptions'=>array(
'id'=>'id',
'size'=>45,
'maxlength'=>45,
),
)); ?>
<?php echo $form->error($typeModel,'benefit_type'); ?>
获取名称和ID的扩展类是:
<? class EAutoCompleteAction extends CAction
{
public $model;
public $attribute;
public $id;
private $results = array();
public $returnVal = '';
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};
//$this->results[] = $m-<{$this->id};
$this->results[] = array(
'name' => $m->{$this->attribute},
'id'=> $m->id
);
/* $this->returnVal .= $m->getAttribute('name').'|'
.$m->getAttribute('id'). "\n"; */
}
}
echo CJSON::encode($this->results);
}
}
?>
并在我的控制器中:
public function actions()
{
return array(
'benefit_type_list'=>array(
'class'=>'application.extensions.EAutoCompleteAction',
'model'=>'BenefitType', //My model's class name
'attribute'=>'name', //The attribute of the model i will search
),
);
}
答案 0 :(得分:1)
我使用此扩展程序已经有一段时间了,但它使用了Jquery的自动完成功能,EAutoCompleteAction的数据集可能需要:
$this->results[] = array(
'label' => $m->{$this->attribute},
'value'=> $m->id,
'id'=> $m->id
);
来源:yii forums