Yii2: auto fill fields based on another field from related table(Yii2:根据相关表中的另一个字段自动填充字段)
问题描述
我有一个 MySQL 表和模型 patient_entry,其中包含字段 patient_name、city 和 state.我还有另一个表/模型 health_card,它也包含 patient_name、city 和 state.
I have a MySQL table and model patient_entry which contains fields patient_name, city and state. I also have another table/model health_card which also contains patient_name, city and state.
假设 patient_entry 表已经填充了 patient_name、city 和 state.
Suppose the patient_entry table is already filled with patient_name, city and state.
当我在 health_card 表单中输入数据时,当我通过与 patient_entry 表相关的下拉字段选择 patient_name 时,我想要要自动填充的相关 city 和 state 字段.
When I am entering data in health_card form, when I select the patient_name via drop-down field related to patient_entry table, I want the related city and state fields to be auto-filled.
我用于 health_card 的 _form.php 看起来像这样:
My _form.php for health_card looks like this:
    <head>
<script>
        $this->registerJs("$('#healthcard-patient_name').on('change',function(){
    $.ajax({
        url: '".yiihelpersUrl::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>
并且在我添加的控制器中,根据建议,这个:
And in the controller I have added, as per the suggestion, this:
public function actionPatient($id){
    // you may need to check whether the entered ID is valid or not
    $model= appmodelsPatientEntry::findOne(['id'=>$id]);
    return yiihelpersJson::encode([
        'city'=>$model->disrict_city,
        'pin'=>$model->pin_code
    ]);
}
推荐答案
您所需要的只是调用 AJAX 请求来获取所需的字段.就像下面这样:
All you need is calling an AJAX request to get needed fields. Just act like below:
(我不知道你的型号名称)看看你的表格,看看你的
patient_name字段的id是什么.它通常是modelname-fieldname.我假设您的模型名称是Patient.因此,patient_name的 id 将是patient-patient_name.
(I do not know your model name)take a look at your form and see what is the
idof yourpatient_namefield. It is usuallymodelname-fieldname. I assume that your model name isPatient. So, the id ofpatient_namewould bepatient-patient_name.
添加 ajax 请求(在您看来).
Add an ajax request (in your view).
调用 AJAX 的代码可能如下所示:
The code for calling AJAX could look just like below:
$this->registerJs("$('#patient-patient_name').on('change',function(){
    $.ajax({
        url: '".yiihelpersUrl::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和state字段的 id 具有以下 id(s):patient-city和state-city相对. - 耐心是控制器中的一个动作
 - 您可能需要删除警报|日志并对上述代码进行一些自定义
 我没有考虑代码清理的任何条件.请确保用户数据正确.
- Change the ControllerName in above code with your own.
 - I assumed that the id of 
cityandstatefields has the following id(s):patient-cityandstate-cityrelatively. - patient is an action in your controller
 - You may need to remove alerts|logs and do some customization on above code
 I didn't consider any conditions for code cleaning. Please make sure that user data is correct.
- 最后,将操作代码添加到您的控制器中.
 
操作代码:
public function actionPatient($id){
    // you may need to check whether the entered ID is valid or not
    $model=  appmodelsPatient::findOne(['id'=>$id]);
    return yiihelpersJson::encode([
        'city'=>$model->city,
        'state'=>$model->state
    ]);
}
                        这篇关于Yii2:根据相关表中的另一个字段自动填充字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Yii2:根据相关表中的另一个字段自动填充字段
				
        
 
            
        基础教程推荐
- php 7.4 在写入变量中的 Twig 问题 2022-01-01
 - PHPUnit 的 Selenium 2 文档到底在哪里? 2022-01-01
 - Yii2 - 在运行时设置邮件传输参数 2022-01-01
 - 如何在数学上评估像“2-1"这样的字符串?产生“1"? 2022-01-01
 - php中的foreach复选框POST 2021-01-01
 - php中的PDF导出 2022-01-01
 - 将变量从树枝传递给 js 2022-01-01
 - 使用 scandir() 在目录中查找文件夹 (PHP) 2022-01-01
 - 主题化 Drupal 7 的 Ubercart “/cart"页 2021-01-01
 - Web 服务器如何处理请求? 2021-01-01
 
    	
    	
    	
    	
    	
    	
    	
    	
				
				
				
				