我有一个MySQL表和模型patient_entry
,其中包含字段patient_name
,city
和state
。我还有另一个表格/模型health_card
,其中还包含patient_name
,city
和state
。
假设patient_entry
表格已填充patient_name
,city
和state
。
当我以health_card
形式输入数据时,当我选择与patient_name
表相关的patient_entry
via下拉字段时,我想要相关的city
和{ {1}}要自动填充的字段。
我state
的{{1}}看起来像这样:
_form.php
在控制器中,我根据建议添加了:
health_card
答案 0 :(得分:3)
您只需调用AJAX
请求即可获取所需字段。就像下面这样:
(我不知道您的型号名称)查看您的表单,看看id
字段的patient_name
是什么。通常是modelname-fieldname
。我假设您的模型名称为Patient
。因此,patient_name
的ID为patient-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');
}
});
});");
注意:
city
和state
字段的ID具有以下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
]);
}