/**
  * {@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);
 }
Exemplo n.º 2
0
    /**
     * 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));
 }