formField = $formField; $this->fieldName = $formField->fieldName; $this->valueFrom = $formField->valueFrom; $this->model = $model; if (isset($configuration->sessionKey)) { $this->sessionKey = $configuration->sessionKey; } if (isset($configuration->previewMode)) { $this->previewMode = $configuration->previewMode; } parent::__construct($controller, $configuration); } /** * Returns a unique ID for this widget. Useful in creating HTML markup. */ public function getId($suffix = null) { $id = parent::getId($suffix); $id .= '-' . $this->fieldName; return Str::evalHtmlId($id); } /** * Process the postback value for this widget. * @param $value The existing value for this widget. * @return string The new value for this widget. */ public function getSaveValue($value) { return $value; } /** * Returns the value for this form field, * supports nesting via HTML array. * @return string */ public function getLoadValue() { return $this->formField->getValueFromData($this->model); } /** * Returns the final model and attribute name of * a nested HTML array attribute. * Eg: list($model, $attribute) = $this->resolveModelAttribute($this->valueFrom); * @param string $attribute. * @return array */ public function resolveModelAttribute($attribute) { $model = $this->model; $parts = Str::evalHtmlArray($attribute); $last = array_pop($parts); foreach ($parts as $part) { $model = $model->{$part}; } return [$model, $last]; } }