Yii2:将文本字段的总和分配给表单中的另一个字段

Yii2: Assign sum of textfields to another field in form

我是 Yii 的新手,我正在尝试将 _form.php 中 3 个不同字段的总和分配到总字段中。我试过直接在控制器中分配它,但总字段保持为空。我基本上是在努力实现这一目标:

$model->cuerdas= $model->propia + $model->usofructo + $model->arrendada;

这是我尝试进行分配的控制器的 actionCreate 代码:

 public function actionCreate()
{
    $model = new AsdaPa0025();
    $modelosfacilidades = [new FacilidadesARealizar0025()];

    if ($model->load(Yii::$app->request->post())) {
        $model->file = UploadedFile::getInstance($model, 'file');
        $modelosfacilidades = Model::createMultiple(FacilidadesARealizar0025::classname());
        Model::loadMultiple($modelosfacilidades, Yii::$app->request->post());

        //valida los modelos
        $valid = $model->validate();
        $valid = Model::validateMultiple($modelosfacilidades) && $valid;

        if ($valid) {
            $transaction = \Yii::$app->db->beginTransaction();
            try {
                if ($flag = $model->save(false)) {
                    foreach ($modelosfacilidades as $modelofacilidades) {
                        //Aqui le digo al controlador que id_0025 es igual al id de la instancia de la forma 0025
                        $modelofacilidades->id_0025 = $model->id_asda_pa_0025;
                        if (! ($flag = $modelofacilidades->save(false))) {
                            $transaction->rollBack();
                            break;
                        }
                    }
                }
                if ($flag) {
                    $transaction->commit();
                    $model->cuerdas= $model->propia + $model->usofructo + $model->arrendada;
                    $model->file->saveAs('uploads/' . $model->file->baseName . '.' . $model->file->extension);
                    return $this->redirect(['view', 'id' => $model->id_asda_pa_0025]);
                }
            } catch (Exception $e) {
                $transaction->rollBack();
            }
        }

       // $model->file = 'uploads/' . $model->imageFile->baseName . '.' . $model->imageFile->extension;

       // if ($model->save()) {
        //    $model->file->saveAs('uploads/' . $model->file->baseName . '.' . $model->file->extension);
          //  return $this->redirect(['view', 'id' => $model->id_asda_pa_0025]);
     }
     else{
      // return $this->redirect(['view', 'id' => $model->id_asda_pa_0025]);

      return $this->render('create', [
        'model' => $model,
        'modelosfacilidades' => (empty($modelosfacilidades)) ? [new FacilidadesARealizar0025] : $modelosfacilidades

    ]);

     }


   }

我还尝试从控制器中的模型而不是手动分配调用此函数,但我得到一个 using this->() when not in object context 错误

/**
 * @return \yii\db\ActiveQuery
 */
public static function getSuma()
{

  return $this->find()->sum('propia + arrendada + usofructo');


}

这是我的 _form.php,其中的字段是:

<div class="col-sm-6">
         Cuerdas
         <?= $form->field($model, 'propia')->textInput()->label('7.Propia') ?>
         <?= $form->field($model, 'arrendada')->textInput()->label('8.Arrendada') ?>
         <?= $form->field($model, 'usofructo')->textInput()->label('9.Usufructo') ?>
         <?= $form->field($model, 'cuerdas')->textInput(['readOnly'=> true])->label('10. Total Cuerdas')?>


    </div>

我将 cuerdas 字段输入设置为只读,因为它将接收其他 3 个值的总和。

我将不胜感激任何关于如何实现这一目标的正确方法的帮助。

假设您已在加载模型后正确分配表单中的值,您分配的值将可用,因此

  if ($model->load(Yii::$app->request->post())) {
     $model->cuerdas= $model->propia + $model->usofructo + $model->arrendada;
     ......

应该可以