Yang Anda butuhkan hanyalah memanggil AJAX
permintaan untuk mendapatkan bidang yang dibutuhkan. Cukup bertindak seperti di bawah ini:
-
(Saya tidak tahu nama model Anda) lihat formulir Anda dan lihat apa
id
daripatient_name
your Anda bidang. Biasanyamodelname-fieldname
. Saya berasumsi bahwa nama model Anda adalahPatient
. Jadi, id daripatient_name
akan menjadipatient-patient_name
. -
Tambahkan permintaan ajax (dalam pandangan Anda).
Kode untuk memanggil AJAX dapat terlihat seperti di bawah ini:
$this->registerJs("$('#patient-patient_name').on('change',function(){
$.ajax({
url: '".yii\helpers\Url::toRoute("controllerName/patient")."',
dataType: 'json',
method: 'GET',
data: {id: $(this).val()},
success: function (data, textStatus, jqXHR) {
$('#patient-city').val(data.city);
$('#patient-state').val(data.state);
},
beforeSend: function (xhr) {
alert('loading!');
},
error: function (jqXHR, textStatus, errorThrown) {
console.log('An error occured!');
alert('Error in ajax request');
}
});
});");
Catatan:
- Ubah Nama Pengontrol dalam kode di atas dengan kode Anda sendiri.
- Saya berasumsi bahwa id
city
danstate
bidang memiliki id berikut:patient-city
danstate-city
relatif. - sabar adalah tindakan di pengontrol Anda
- Anda mungkin perlu menghapus lansiran|log dan melakukan beberapa penyesuaian pada kode di atas
-
Saya tidak mempertimbangkan kondisi apa pun untuk pembersihan kode. Pastikan data pengguna sudah benar.
- Terakhir, tambahkan kode tindakan ke pengontrol Anda.
Kode tindakan:
public function actionPatient($id){
// you may need to check whether the entered ID is valid or not
$model= \app\models\Patient::findOne(['id'=>$id]);
return \yii\helpers\Json::encode([
'city'=>$model->city,
'state'=>$model->state
]);
}