Tất cả những gì bạn cần là gọi một AJAX
yêu cầu nhận các trường cần thiết. Chỉ cần hành động như dưới đây:
-
(Tôi không biết tên kiểu máy của bạn) hãy xem biểu mẫu của bạn và xem
id
là gì trong sốpatient_name
của bạn đồng ruộng. Nó thường làmodelname-fieldname
. Tôi giả định rằng tên kiểu máy của bạn làPatient
. Vì vậy, id củapatient_name
sẽ làpatient-patient_name
. -
Thêm yêu cầu ajax (theo quan điểm của bạn).
Mã để gọi AJAX có thể trông giống như bên dưới:
$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');
}
});
});");
Ghi chú:
- Thay đổi Tên người điều khiển trong đoạn mã trên với mã của riêng bạn.
- Tôi đã giả định rằng id của
city
vàstate
các trường có (các) id sau:patient-city
vàstate-city
tương đối. - bệnh nhân là một hành động trong bộ điều khiển của bạn
- Bạn có thể cần xóa nhật ký | cảnh báo và thực hiện một số tùy chỉnh trên mã trên
-
Tôi đã không xem xét bất kỳ điều kiện nào để làm sạch mã. Hãy đảm bảo rằng dữ liệu người dùng là chính xác.
- Cuối cùng, hãy thêm mã hành động vào bộ điều khiển của bạn.
Mã hành động:
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
]);
}