我有一个MySQL表和模型patient_entry包含的字段patient_name,city以及state。我也有另一个表/模型health_card也包含patient_name,city和state。
patient_entry
patient_name
city
state
health_card
假设patient_entry已经充满了桌子patient_name,city和state。
当我以health_card表格形式输入数据时,当我选择patient_name与patient_entry表格相关的“ 通过”下拉字段时,我希望相关city和state字段能够自动填写。
我的_form.phpfor health_card看起来像这样:
_form.php
<head> <script> $this->registerJs("$('#healthcard-patient_name').on('change',function(){ $.ajax({ url: '".yii\helpers\Url::toRoute("HealthCard/patient")."', dataType: 'json', method: 'GET', data: {id: $(this).val()}, success: function (data, textStatus, jqXHR) { $('#healthcard-city').val(data.city); $('#healthcard-pincode').val(data.pin); }, beforeSend: function (xhr) { alert('loading!'); }, error: function (jqXHR, textStatus, errorThrown) { console.log('An error occured!'); alert('Error in ajax request'); } }); });"); </script> </head>
根据建议,在控制器中添加了以下内容:
public function actionPatient($id){ // you may need to check whether the entered ID is valid or not $model= \app\models\PatientEntry::findOne(['id'=>$id]); return \yii\helpers\Json::encode([ 'city'=>$model->disrict_city, 'pin'=>$model->pin_code ]); }
您所需要的只是调用AJAX请求以获取必填字段。就像下面这样:
AJAX
(我不知道您的型号名称)查看您的表格,看看id您的patient_name字段是什么。通常是这样modelname-fieldname。我认为您的型号名称是Patient。因此,的id patient_name会patient-patient_name。
id
modelname-fieldname
Patient
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'); } }); });");
笔记:
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 ]); }