Alt du behøver er at kalde en AJAX
anmodning om at få nødvendige felter. Bare opfør som nedenfor:
-
(Jeg kender ikke dit modelnavn) tag et kig på din formular og se, hvad der er
id
af ditpatient_name
Mark. Det er normaltmodelname-fieldname
. Jeg antager, at dit modelnavn erPatient
. Altså id'et forpatient_name
ville værepatient-patient_name
. -
Tilføj en ajax-anmodning (efter din mening).
Koden til at kalde AJAX kunne se ud som nedenfor:
$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');
}
});
});");
Bemærkninger:
- Skift ControllerName i ovenstående kode med din egen.
- Jeg antog, at id'et for
city
ogstate
felter har følgende id(er):patient-city
ogstate-city
forholdsvis. - patient er en handling i din controller
- Du skal muligvis fjerne advarsler|logfiler og tilpasse koden ovenfor
-
Jeg overvejede ikke nogen betingelser for koderensning. Sørg for, at brugerdata er korrekte.
- Tilføj endelig handlingskode til din controller.
Handlingskode:
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
]);
}