必要なのはAJAX
を呼び出すことだけです 必要なフィールドを取得するように要求します。以下のように行動してください:
-
(モデル名はわかりません)フォームを見て、
id
が何であるかを確認してください あなたのpatient_name
分野。通常はmodelname-fieldname
。モデル名はPatient
だと思います 。したがって、patient_name
のIDpatient-patient_name
になります 。 -
(ビューで)ajaxリクエストを追加します。
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');
}
});
});");
注:
- ControllerNameを変更します 上記のコードであなた自身のものを使ってください。
-
city
のIDを想定しました およびstate
フィールドのIDは次のとおりです。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
]);
}