我的表单中有一个下拉列表...它的内容来自不同的模型......这是我的代码
<?php echo $form->labelEx($model,'pr_id'); ?>
<?php echo $form->dropDownList($model,'pr_id', CHtml::listData(PatientRecord::model()->findAll(), 'pr_id', 'first_name'), array('empty'=>'Select Patient')); ?>
<?php echo $form->error($model,'pr_id'); ?>
假设该表中有大量数据,我认为用户不愿意滚动选择... 有没有办法在下拉列表中放入搜索过滤器? 我认为在Yii2中这是可能的,但我现在正在使用Yii1进行项目,所以......有什么建议吗?
另外,有没有办法在下拉列表的显示屏上显示first_name和last_name?
对不起初学者的问题 任何帮助将受到高度赞赏:D
答案 0 :(得分:1)
您可以使用此Select2 Extension,下载扩展程序并将其放在/protected/extensions
目录下。
只需将其添加到您的视图中,例如:
<?php
$this->widget('ext.select2.ESelect2',array(
'model'=>$model,
'attribute'=>'pr_id',
'data'=>$model->searchPatient(),//function to provide data
// or
//'data'=>CHtml::listData(PatientRecord::model()->findAll(), 'id', 'first_name')
);
?>
并在您的模型中:
<?php
public function searchPatient() {
$data = array();
$patientModel = PatientRecord::model()->findAll();
foreach($patientModel as $patient){
$data[] = $patient->first_name." ".$patient->last_name;
}
return $data;
}
?>
这就是你需要做的一切,希望有所帮助:)