sql >> Database >  >> RDS >> Mysql

Yii2:velden automatisch invullen op basis van een ander veld uit gerelateerde tabel

Het enige wat je nodig hebt is het bellen van een AJAX verzoek om de benodigde velden te krijgen. Gedraag je zoals hieronder:

  1. (Ik weet je modelnaam niet) kijk op je formulier en kijk wat de id is van uw patient_name veld. Het is meestal modelname-fieldname . Ik neem aan dat uw modelnaam Patient is . Dus de id van patient_name zou zijn patient-patient_name .

  2. Voeg een ajax-verzoek toe (naar jouw mening).

De code om AJAX te bellen zou er ongeveer zo uit kunnen zien als hieronder:

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

Opmerkingen:

  • Wijzig de ControllerName in bovenstaande code met uw eigen.
  • Ik nam aan dat de id van city en state velden heeft de volgende id('s):patient-city en state-city relatief.
  • patiënt is een actie in je controller
  • Misschien moet je waarschuwingen|logs verwijderen en wat aanpassingen doen aan bovenstaande code
  • Ik heb geen voorwaarden overwogen voor het opschonen van codes. Zorg ervoor dat de gebruikersgegevens correct zijn.

    1. Voeg tot slot actiecode toe aan je controller.

Actiecode:

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



  1. Verplaats niet-NULL-waarden omhoog binnen partitie

  2. Automatisch uitzonderingen opvangen voor PDO in PHP

  3. RegEx gebruiken in SQL Server

  4. Hoe krijg ik twee retourwaarden van Oracle Stored Procedure?