我的模型包含列cnic,名称,年龄,城市等。 当用户开始输入cnic值时,我想要的是,如果该cnic已经在数据库中,那么应该出现完整的cnic值,并且在选择该值时,名称,年龄,城市的值将自动填入文本输入。 目前它是。
$data = Patient::find()->all();
foreach($data as $cnics){
$cnic[] = $cnics->cnic;
}
echo $form->field($model, 'cnic')->widget(yii\jui\AutoComplete::classname(), [
'clientOptions' => [
'source' => $cnic,
'select' => //some code
],
<?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'age')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'address')->textInput(['maxlength' => true]) ?>
答案 0 :(得分:0)
'clientOptions' => [
'source' => $cnic,
'select' => new \yii\web\JsExpression("function( event, ui ) {
var cnic = ui.item.value;
complete(cnic);
}")
],
function complete(id){
$.ajax({
url: "?r=patient/autocomplete",
type: 'post',
data: {cnic: id},
success: function(data) {
var obj = JSON.parse(data);
$('#patient-name').val(obj[0].name);
$('#patient-age').val(obj[0].age);
$('#patient-dob').val(obj[0].dob);
$('#patient-address').val(obj[0].address);
$('#patient-city').val(obj[0].city);
}
});
控制器中的
public function actionAutocomplete()
{
$cnic = $_POST['cnic'];
$query = ModelName::find()->where(['cnic'=> $cnic])->one();
$data[] = ['name' => $query->name,'dob'=> $query->dob, 'age' =>$query->age, 'address'=> $query->address, 'city' => $query->city];
echo json_encode($data);
}