/** * Create a configuration node to define the steps of a process. * * @return ArrayNodeDefinition */ private function createStepsNodeDefinition() { $stepsNode = new ArrayNodeDefinition('steps'); $stepsNode->defaultValue(array())->useAttributeAsKey('name')->prototype('array')->addDefaultsIfNotSet()->children()->scalarNode('label')->defaultValue('')->end()->arrayNode('roles')->prototype('scalar')->end()->end()->arrayNode('model_status')->validate()->ifTrue(function ($value) { return is_array($value) && count($value) < 2; })->thenInvalid('You must specify an array with [ method, constant ]')->ifTrue(function ($value) { return !defined($value[1]); })->thenInvalid('You must specify a valid constant name as second parameter')->end()->prototype('scalar')->end()->end()->scalarNode('on_invalid')->defaultNull()->end()->end()->append($this->createNextStatesNodeDefinition())->end(); return $stepsNode; }
/** * {@inheritdoc} */ public function configure(ArrayNodeDefinition $builder) { $builder->defaultValue(array('default' => array('enabled' => true, 'type' => null, 'settings' => array())))->treatNullLike(array())->treatFalseLike(array())->useAttributeAsKey('name')->prototype('array')->beforeNormalization()->ifTrue(function ($suite) { return is_array($suite) && count($suite); })->then(function ($suite) { $suite['settings'] = isset($suite['settings']) ? $suite['settings'] : array(); foreach ($suite as $key => $val) { $suiteKeys = array('enabled', 'type', 'settings'); if (!in_array($key, $suiteKeys)) { $suite['settings'][$key] = $val; unset($suite[$key]); } } return $suite; })->end()->normalizeKeys(false)->addDefaultsIfNotSet()->treatTrueLike(array('enabled' => true))->treatNullLike(array('enabled' => true))->treatFalseLike(array('enabled' => false))->children()->booleanNode('enabled')->info('Enables/disables suite')->defaultTrue()->end()->scalarNode('type')->info('Specifies suite type')->defaultValue(null)->end()->arrayNode('settings')->info('Specifies suite extra settings')->defaultValue(array())->useAttributeAsKey('name')->prototype('variable')->end()->end()->end()->end(); }
/** * @expectedException \Symfony\Component\Config\Definition\Exception\InvalidDefinitionException */ public function testPrototypeNodesCantHaveADefaultValueWhenUsingDefaultChildren() { $node = new ArrayNodeDefinition('root'); $node->defaultValue(array())->addDefaultChildrenIfNoneSet('foo')->prototype('array'); $node->getNode(); }
/** * {@inheritdoc} */ public function configure(ArrayNodeDefinition $builder) { $builder->defaultValue(array($this->defaultFormatter => array('enabled' => true)))->useAttributeAsKey('name')->prototype('array')->beforeNormalization()->ifTrue(function ($a) { return is_array($a) && !isset($a['enabled']); })->then(function ($a) { return array_merge($a, array('enabled' => true)); })->end()->useAttributeAsKey('name')->treatTrueLike(array('enabled' => true))->treatNullLike(array('enabled' => true))->treatFalseLike(array('enabled' => false))->prototype('variable')->end()->end(); }
/** * @return ArrayNodeDefinition */ private function getSubResourcesNode() { $node = new ArrayNodeDefinition('sub_resources'); $node->defaultValue([])->prototype('array')->children()->scalarNode('assoc_parent')->end()->scalarNode('assoc_sub')->end()->end()->end(); return $node; }