formField = $formField; $this->fieldName = $formField->fieldName; $this->valueFrom = $formField->valueFrom; $this->config = $this->makeConfig($configuration); $this->fillFromConfig([ 'model', 'data', 'sessionKey', 'previewMode', 'showLabels' ]); 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->data ?: $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) { $parts = Str::evalHtmlArray($attribute); return $this->model->resolveAttribute($parts); } }