Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Yii2:Automatisches Ausfüllen von Feldern basierend auf einem anderen Feld aus der zugehörigen Tabelle

Alles, was Sie brauchen, ist ein Aufruf von AJAX Anfrage, um benötigte Felder zu erhalten. Gehen Sie einfach wie folgt vor:

  1. (Ich kenne Ihren Modellnamen nicht) Sehen Sie sich Ihr Formular an und sehen Sie, was die id ist Ihres patient_name aufstellen. Normalerweise ist es modelname-fieldname . Ich gehe davon aus, dass Ihr Modellname Patient ist . Also die ID von patient_name wäre patient-patient_name .

  2. Fügen Sie eine Ajax-Anfrage hinzu (aus Ihrer Sicht).

Der Code für den Aufruf von AJAX könnte wie folgt aussehen:

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

Hinweise:

  • Ändern Sie den Controller-Namen im obigen Code mit Ihrem eigenen.
  • Ich nahm an, dass die ID von city und state Felder hat die folgende(n) ID(s):patient-city und state-city verhältnismäßig.
  • Patient ist eine Aktion in Ihrem Controller
  • Möglicherweise müssen Sie Warnungen|Protokolle entfernen und einige Anpassungen am obigen Code vornehmen
  • Ich habe keine Bedingungen für die Codereinigung berücksichtigt. Bitte stellen Sie sicher, dass die Benutzerdaten korrekt sind.

    1. Fügen Sie zum Schluss Aktionscode in Ihren Controller ein.

Aktionscode:

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