Я новичок в Yii, и я пытаюсь назначить сумму из 3 различных полей в моем _form.php в общее поле. Я попытался назначить его непосредственно в контроллере, но общее поле остается нулевым. Я в основном пытаюсь добиться этого:
$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
]);
}
}
Я также пытался вызвать эту функцию из модели в контроллере вместо ручного назначения, но я получаю , используя this -> (), когда отсутствует в контексте объекта ошибка
/**
* @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 доступным только для чтения, поскольку он будет тем, который получит сумму трех других значений.
Буду признателен за любую помощь в том, как будет правильный подход для достижения этой цели.