Mysql
 sql >> Base de données >  >> RDS >> Mysql

Yii2 :remplissez automatiquement les champs en fonction d'un autre champ de la table associée

Tout ce dont vous avez besoin est d'appeler un AJAX demande d'obtenir les champs nécessaires. Agissez comme ci-dessous :

  1. (Je ne connais pas le nom de votre modèle) jetez un œil à votre formulaire et voyez quel est l'id de votre patient_name champ. Il s'agit généralement de modelname-fieldname . Je suppose que le nom de votre modèle est Patient . Donc, l'identifiant de patient_name serait patient-patient_name .

  2. Ajoutez une requête ajax (à votre avis).

Le code pour appeler AJAX pourrait ressembler à ceci :

$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');
        }
    });
});"); 

Remarques :

  • Modifier le nom du contrôleur dans le code ci-dessus avec le vôtre.
  • J'ai supposé que l'identifiant de city et state les champs ont les identifiants suivants :patient-city et state-city relativement.
  • patiente est une action dans votre contrôleur
  • Vous devrez peut-être supprimer les alertes|journaux et personnaliser le code ci-dessus
  • Je n'ai considéré aucune condition pour le nettoyage du code. Veuillez vous assurer que les données de l'utilisateur sont correctes.

    1. Enfin, ajoutez le code d'action dans votre contrôleur.

Code action :

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
    ]);
}