Het enige wat je nodig hebt is het bellen van een AJAX
verzoek om de benodigde velden te krijgen. Gedraag je zoals hieronder:
-
(Ik weet je modelnaam niet) kijk op je formulier en kijk wat de
id
is van uwpatient_name
veld. Het is meestalmodelname-fieldname
. Ik neem aan dat uw modelnaamPatient
is . Dus de id vanpatient_name
zou zijnpatient-patient_name
. -
Voeg een ajax-verzoek toe (naar jouw mening).
De code om AJAX te bellen zou er ongeveer zo uit kunnen zien als hieronder:
$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');
}
});
});");
Opmerkingen:
- Wijzig de ControllerName in bovenstaande code met uw eigen.
- Ik nam aan dat de id van
city
enstate
velden heeft de volgende id('s):patient-city
enstate-city
relatief. - patiënt is een actie in je controller
- Misschien moet je waarschuwingen|logs verwijderen en wat aanpassingen doen aan bovenstaande code
-
Ik heb geen voorwaarden overwogen voor het opschonen van codes. Zorg ervoor dat de gebruikersgegevens correct zijn.
- Voeg tot slot actiecode toe aan je controller.
Actiecode:
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
]);
}