/** * {@inheritdoc} */ protected function finalizeValue($value) { foreach ($this->requiredKeys as $requiredKey) { if (!array_key_exists($requiredKey, $value)) { $msg = sprintf('The key "%s" at path "%s" must be configured.', $requiredKey, $this->getPath()); $ex = new InvalidConfigurationException($msg); $ex->setPath($this->getPath()); throw $ex; } } return parent::finalizeValue($value); }
/** * Configures a variable node. * * @param VariableNode $configNode The node to configure * @param NodeBuilder $node The builder of the node */ protected function configureVariableNode(VariableNode $configNode, NodeBuilder $node) { if (null !== $node->normalization) { $configNode->setNormalizationClosures( $this->buildExpressions($node->normalization->before) ); } if (null !== $node->merge) { $configNode->setAllowOverwrite($node->merge->allowOverwrite); } if (true === $node->default) { $configNode->setDefaultValue($node->defaultValue); } if (false === $node->allowEmptyValue) { $configNode->setAllowEmptyValue($node->allowEmptyValue); } $configNode->addEquivalentValue(null, $node->nullEquivalent); $configNode->addEquivalentValue(true, $node->trueEquivalent); $configNode->addEquivalentValue(false, $node->falseEquivalent); $configNode->setRequired($node->required); if (null !== $node->validation) { $configNode->setFinalValidationClosures( $this->buildExpressions($node->validation->rules) ); } }
/** * Make the closure serializable. * * @param Closure $value * * @return SerializableClosure */ protected function finalizeValue($value) { return new SerializableClosure(parent::finalizeValue($value)); }