Exemplo n.º 1
0
 private function buildEntitiesPropertiesNode()
 {
     $entitiesPropertiesNode = new ArrayNodeDefinition('properties');
     $prototype = $entitiesPropertiesNode->info('List of properties of entity')->prototype('array');
     foreach ($this->treeConfigurators as $configurator) {
         foreach ((array) $configurator->appendEntitiesPropertiesNode() as $node) {
             $prototype->append($node);
         }
     }
     $prototype->children()->scalarNode('type')->info('type of data, standard type of other entity name')->example('DateTime')->cannotBeEmpty()->beforeNormalization()->always(function ($v) {
         return strtolower($v);
     })->end()->validate()->ifTrue(function ($v) {
         return !$this->typeFactory->isValidType($v);
     })->thenInvalid('Invalid Type %s')->end()->end()->scalarNode('cardinality')->info('type of cardinality OneToMany, ManyToMany')->example('(0..1)')->cannotBeEmpty()->end()->scalarNode('accessorPrefix')->info('Prefix used has accessor method : prefixPropertieName')->example('is, has, get')->defaultValue('get')->end()->scalarNode('enum')->info('Name of target enum')->cannotBeEmpty()->end()->scalarNode('entity')->info('name of target entity')->example('DateTime')->cannotBeEmpty()->end()->scalarNode('inverse')->info('define oposite property in cas of relation')->example('MyEntity::propertieName')->cannotBeEmpty()->end()->booleanNode('nullable')->info('Is this propertie is nullable?')->defaultFalse()->end()->booleanNode('primary')->info('Is this propertie is primary key ?')->defaultFalse()->end()->booleanNode('autoincrement')->info('Is this propertie is auto incremented ?')->defaultFalse()->end()->booleanNode('unique')->info('Is this propertie is unique?')->defaultFalse()->end()->variableNode('default')->info('Default value of propertie')->end()->integerNode('length')->info('Max length for string type')->min(0)->end()->integerNode('precision')->info('Number of decimal for float type')->min(1)->max(15)->end();
     $entitiesPropertiesNode->end();
     return $entitiesPropertiesNode;
 }