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;
......
应该可以
我是 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;
......
应该可以