kartik-v/yii2-editable

Setting outputValue after model->save()

Closed this issue · 0 comments

When passing some composite attribute or any attribute that updates relational data via custom setter the model will never new the actual data in outputValue callback. It is better to put $value generation after $model->save() in EditableColumnAction. So using callable outputValueyou can get (re-read from db) actual data of saved model.

Before:
if ($model->load($postData)) { $params = [$model, $attribute, $key, $index]; $value = static::parseValue($this->outputValue, $params); if (!$model->save()) { $message = static::parseValue($this->outputMessage, $params); if (empty($message) && $this->showModelErrors) { $message = Html::errorSummary($model, $this->errorOptions); } } else { $message = static::parseValue($this->outputMessage, $params); } return ['output' => $value, 'message' => $message]; }

After:
if ($model->load($postData)) { $params = [$model, $attribute, $key, $index]; if (!$model->save()) { $message = static::parseValue($this->outputMessage, $params); if (empty($message) && $this->showModelErrors) { $message = Html::errorSummary($model, $this->errorOptions); } } else { $message = static::parseValue($this->outputMessage, $params); } $value = static::parseValue($this->outputValue, $params); return ['output' => $value, 'message' => $message]; }