示例#1
0
 public function buildFromDefinition()
 {
     foreach ($this->definition['types'] as $entityType => $bundles) {
         foreach ($bundles as $bundleName => $info) {
             $class = $this->getClassForEntity($entityType);
             /** @var $builder AbstractEntityTypeBuilder */
             $builder = new $class($bundleName, $info['label'], $info['description']);
             $builder->build();
         }
     }
     foreach ($this->definition['fields'] as $fieldName => $fieldType) {
         $builder = new FieldBuilder($fieldName, $fieldType);
         $builder->build();
     }
     foreach ($this->definition['instances'] as $entityType => $bundles) {
         foreach ($bundles as $bundleName => $fieldInfo) {
             foreach ($fieldInfo as $fieldName => $widgetType) {
                 $instanceBuilder = new AttachedInstanceBuilder($fieldName, $fieldName, new WidgetBuilder($widgetType));
                 $instanceBuilder->setEntityType($entityType);
                 $instanceBuilder->setBundle($bundleName);
                 $instanceBuilder->build();
             }
         }
     }
 }
 protected function createInstance()
 {
     $entities = entity_get_info();
     $entityList = array_keys($entities);
     $entity = $this->dialog->select($this->output, 'What entity? ', $entityList);
     $entity = $entityList[$entity];
     $bundles = field_info_bundles($entity);
     $bundleList = array_keys($bundles);
     $bundle = $this->dialog->select($this->output, 'What bundle? ', $bundleList);
     $bundle = $bundleList[$bundle];
     $field_types = FieldBuilder::getFields();
     $fieldList = array();
     foreach ($field_types as $field => $definition) {
         $fieldList[$field] = sprintf("%s (%s)", $definition['label'], $field);
     }
     $fieldValues = array_keys($field_types);
     $field = $this->dialog->select($this->output, 'Field To Attach', array_values($fieldList));
     $field = $fieldValues[$field];
     $widget_types = WidgetBuilder::getTypesForFieldType($field_types[$field]['type']);
     $widgetList = array_keys($widget_types);
     $widget = $this->dialog->select($this->output, 'Widget to Use', array_values($widget_types));
     $widget = $widgetList[$widget];
     $label = $this->dialog->ask($this->output, 'What label for this instance? ');
     $widgetDefinition = new WidgetBuilder($widget, $label);
     $builder = new InstanceBuilder($field, $label, $widgetDefinition);
     $builder->build($entity, $bundle);
     $this->output->writeln("Created instance of field {$field} with label <info>{$label}</info> on {$entity}:{$bundle}");
     $this->mainQuestion();
 }