/** * Transform an incoming value, which is described by the given attributespec, * to it's input (entity compatible) representation and set result on the given entity. * * @param mixed $input_value * @param EntityInterface $entity * @param SpecificationInterface $specification * * @return void */ public function revert($input_value, EntityInterface $entity, SpecificationInterface $specification) { $attribute_name = $specification->getOption('attribute', $specification->getName()); $entity->setValue($attribute_name, $input_value); }
/** * Sets either given default value or value from option to the given attribute. * * @param Entity $entity the entity to modify * @param string $attribute_name the name of the attribute to set a value for * @param mixed $default_value Default value to set. * @param array $options Array containing a `attribute_name => $mixed` entry. * $mixed is set as value instead of $default_value. * If $mixed is a closure it will be called and used. * $mixed may also be another callable like an array * `array($class, "$methodName")` or a string like * `'Your\Namespace\Foo::getStaticTrololo'`. * * @return void */ protected function setValue(EntityInterface $entity, AttributeInterface $attribute, $default_value, array $options = array()) { $attribute_name = $attribute->getName(); $attribute_options = array(); if (!empty($options[self::OPTION_FIELD_VALUES]) && is_array($options[self::OPTION_FIELD_VALUES])) { $attribute_options = $options[self::OPTION_FIELD_VALUES]; } if (empty($attribute_options[$attribute_name])) { $entity->setValue($attribute_name, $default_value); } else { $option = $attribute_options[$attribute_name]; if (is_callable($option)) { $entity->setValue($attribute_name, call_user_func($option)); } else { $entity->setValue($attribute_name, $option); } } }