依赖字段 yii2

Dependent fields yii2

我需要框架 Yii2 中的 2 个依赖字段示例:

我想当我插入 "Numero de Personas"= 5 或其他数值时,自动 "Consumo de Agua"= 2 * "Numero de Personas" = 10。 我看到了 onchange yii2 但我不知道如何使用它,我认为 onchange yii2 是一个替代方案。

<?= $form->field($model, 'NUM_PERSONAS')->textInput(['maxlength' => true]) ?>

<?= $form->field($model, 'AGUA_CONSUMO')->textInput(['maxlength' => true]) ?>

更新:

有 2 个计算字段示例:

$("#consumo-form #{$aguaId},#consumo-form #{$personaId}").on("keyup", function (e) {
        var persona = $("#consumo-form #{$personaId}").val();
        var agua = $("#consumo-form #{$aguaId}").val();
        $("#consumo-form #{$indConsumoAguaM}").val(persona*agua)
    });

这是我会使用的方法:

在您的视图中

<?php
    $personaId = Html::getInputId($model, 'NUM_PERSONAS');
    $aguaId = Html::getInputId($model, 'AGUA_CONSUMO');
?>

    <!-- Begin of form -->
    <?= $form->field($model, 'NUM_PERSONAS')->textInput(['maxlength' => true]) ?>

    <?= $form->field($model, 'AGUA_CONSUMO')->textInput(['maxlength' => true]) ?>
    <!-- End of form -->

<?php
$js = <<<JS
$("#my-form-id #{$personaId}").on("keyup", function (e) {
    var persona = $(this).val();
    $("#my-form-id #{$aguaId}").val(persona*2)
});
$("#my-form-id #{$aguaId}").on("keyup", function (e) {
    var agua = $(this).val()%2 == 0 ? $(this).val() : $(this).val() - 1;
    $("#my-form-id #{$personaId}").val(agua/2)
});
JS;
$this->registerJs($js);

有了这个,两个字段都会在另一个字段被更改后尝试自动完成。但是,为了安全起见,我们还需要添加对模型规则的验证。

在您的模型中:

public function rules()
{
    return [
        // Your rules 
        [['NUM_PERSONAS', 'AGUA_CONSUMO'], 'checkValues']
    ];
}

public function checkValues($attribute)
{
    $persona = $this->NUM_PERSONAS;
    $agua = $this->AGUA_CONSUMO%2 == 0 ? $this->AGUA_CONSUMO : $this->AGUA_CONSUMO - 1;
    if ($persona != $agua/2) {
        $this->addError($attribute, 'Error message');
    }
}