/** * {@inheritdoc} */ public function buildType(FieldConfigInterface $config, array $options) { $config->setValueComparison($this->valueComparison); $config->setValueTypeSupport(ValuesBag::VALUE_TYPE_RANGE, true); $config->setValueTypeSupport(ValuesBag::VALUE_TYPE_COMPARISON, true); $viewTransformers = $config->getViewTransformers(); $config->resetViewTransformers(); $config->addViewTransformer(new BirthdayTransformer($viewTransformers, $options['allow_age'], $options['allow_future_date'])); }
/** * Transforms the value if a value transformer is set. * * @param mixed $value * @param FieldConfigInterface $field * * @return string */ protected function normToView($value, FieldConfigInterface $field) : string { // Scalar values should be converted to strings to // facilitate differentiation between empty ("") and zero (0). if (null === $value || !$field->getViewTransformers()) { if (null !== $value && !is_scalar($value)) { throw new \RuntimeException(sprintf('Norm value of type %s is not a scalar value or null and not cannot be ' . 'converted to a string. You must set a viewTransformer for field "%s" with type "%s".', gettype($value), $field->getName(), $field->getType()->getName())); } return (string) $value; } foreach ($field->getViewTransformers() as $transformer) { $value = $transformer->transform($value); } return (string) $value; }
/** * Reverse transforms a value if a value transformer is set. * * @param string $value The value to reverse transform * @param FieldConfigInterface $config * * @return mixed Returns null when the value is empty or invalid */ protected function viewToNorm($value, FieldConfigInterface $config) { $transformers = $config->getViewTransformers(); if (!$transformers) { return '' === $value ? null : $value; } try { for ($i = count($transformers) - 1; $i >= 0; --$i) { $value = $transformers[$i]->reverseTransform($value); } return $value; } catch (TransformationFailedException $e) { return $e; } }