Alles, was Sie brauchen, ist ein Aufruf von AJAX
Anfrage, um benötigte Felder zu erhalten. Gehen Sie einfach wie folgt vor:
-
(Ich kenne Ihren Modellnamen nicht) Sehen Sie sich Ihr Formular an und sehen Sie, was die
id
ist Ihrespatient_name
aufstellen. Normalerweise ist esmodelname-fieldname
. Ich gehe davon aus, dass Ihr ModellnamePatient
ist . Also die ID vonpatient_name
wärepatient-patient_name
. -
Fügen Sie eine Ajax-Anfrage hinzu (aus Ihrer Sicht).
Der Code für den Aufruf von AJAX könnte wie folgt aussehen:
$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');
}
});
});");
Hinweise:
- Ändern Sie den Controller-Namen im obigen Code mit Ihrem eigenen.
- Ich nahm an, dass die ID von
city
undstate
Felder hat die folgende(n) ID(s):patient-city
undstate-city
verhältnismäßig. - Patient ist eine Aktion in Ihrem Controller
- Möglicherweise müssen Sie Warnungen|Protokolle entfernen und einige Anpassungen am obigen Code vornehmen
-
Ich habe keine Bedingungen für die Codereinigung berücksichtigt. Bitte stellen Sie sicher, dass die Benutzerdaten korrekt sind.
- Fügen Sie zum Schluss Aktionscode in Ihren Controller ein.
Aktionscode:
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
]);
}