示例#1
0
 /**
  * generate the resource with all its bits and parts
  *
  * @param BundleInterface $bundle         bundle
  * @param string          $document       document name
  * @param string          $format         format of config files (please use xml)
  * @param array           $fields         fields to add
  * @param boolean         $withRepository generate repository class
  *
  * @return void
  */
 public function generate(BundleInterface $bundle, $document, $format, array $fields, $withRepository)
 {
     $dir = $bundle->getPath();
     $basename = $this->getBundleBaseName($document);
     $bundleNamespace = substr(get_class($bundle), 0, 0 - strlen($bundle->getName()));
     if (!is_null($this->json)) {
         $this->json->setNamespace($bundleNamespace);
     }
     // add more info to the fields array
     $mapper = $this->mapper;
     $fields = array_map(function ($field) use($mapper) {
         return $mapper->map($field, $this->json);
     }, $fields);
     $parameters = $this->parameterBuilder->setParameter('document', $document)->setParameter('base', $bundleNamespace)->setParameter('bundle', $bundle->getName())->setParameter('format', $format)->setParameter('json', $this->json)->setParameter('fields', $fields)->setParameter('basename', $basename)->setParameter('isrecordOriginFlagSet', $this->json->isRecordOriginFlagSet())->setParameter('recordOriginModifiable', $this->json->isRecordOriginModifiable())->setParameter('collection', $this->json->getServiceCollection())->getParameters();
     $this->generateDocument($parameters, $dir, $document, $withRepository);
     $this->generateSerializer($parameters, $dir, $document);
     $this->generateModel($parameters, $dir, $document);
     if ($this->json instanceof JsonDefinition && $this->json->hasFixtures() === true) {
         $this->generateFixtures($parameters, $dir, $document);
     }
     if ($this->generateController) {
         $this->generateController($parameters, $dir, $document);
     }
     $this->generateParameters($dir);
 }
 /**
  * Test JsonDefinitionHash::getDefAsArray() with field definition
  *
  * @return void
  */
 public function testGetDefAsArrayWithDefinition()
 {
     $name = __FUNCTION__ . __LINE__;
     $id = __FUNCTION__ . __LINE__;
     $namespace = __NAMESPACE__;
     $parent = new JsonDefinition((new Schema\Definition())->setId($id));
     $parent->setNamespace($namespace);
     $definition = (new Schema\Field())->setTitle(__FUNCTION__ . __LINE__)->setDescription(__FUNCTION__ . __LINE__)->setExposeAs(__FUNCTION__ . __LINE__)->setReadOnly(true)->setRequired(true);
     $field = new JsonDefinitionHash($name, $parent, [], $definition);
     $this->assertEquals(['name' => $field->getName(), 'type' => $field->getType(), 'exposedName' => $definition->getExposeAs(), 'doctrineType' => $field->getTypeDoctrine(), 'serializerType' => $field->getTypeSerializer(), 'relType' => JsonDefinitionHash::REL_TYPE_EMBED, 'isClassType' => true, 'constraints' => [], 'title' => $definition->getTitle(), 'description' => $definition->getDescription(), 'readOnly' => $definition->getReadOnly(), 'required' => $definition->getRequired()], $field->getDefAsArray());
 }