आपको बस एक AJAX
calling पर कॉल करने की आवश्यकता है आवश्यक फ़ील्ड प्राप्त करने का अनुरोध। बस नीचे की तरह कार्य करें:
-
(मैं आपके मॉडल का नाम नहीं जानता) अपने फॉर्म पर एक नज़र डालें और देखें कि
id
क्या है आपकेpatient_name
. का खेत। यह आमतौर परmodelname-fieldname
होता है . मुझे लगता है कि आपके मॉडल का नामPatient
है . तो,patient_name
. की आईडीpatient-patient_name
होगा । -
एक अजाक्स अनुरोध जोड़ें (आपके विचार में)।
AJAX को कॉल करने का कोड नीचे जैसा दिख सकता है:
$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');
}
});
});");
नोट:
- नियंत्रक नाम बदलें उपरोक्त कोड में अपने स्वयं के साथ।
- मैंने मान लिया था कि
city
. की आईडी औरstate
फ़ील्ड में निम्नलिखित आईडी हैं:patient-city
औरstate-city
अपेक्षाकृत। - रोगी आपके नियंत्रक में एक क्रिया है
- आपको उपरोक्त कोड पर अलर्ट|लॉग निकालने और कुछ अनुकूलन करने की आवश्यकता हो सकती है
-
मैंने कोड सफाई के लिए किसी भी शर्त पर विचार नहीं किया। कृपया सुनिश्चित करें कि उपयोगकर्ता डेटा सही है।
- आखिरकार, अपने कंट्रोलर में एक्शन कोड जोड़ें।
क्रिया कोड:
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
]);
}