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 outputValue
you 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]; }