/**
  *
  * @param \Sds\DoctrineExtensions\Generator\GenerateEventArgs $eventArgs
  */
 public function generatorDojoForm(GenerateEventArgs $eventArgs)
 {
     $metadata = $eventArgs->getDocumentManager()->getClassMetadata($eventArgs->getClassName());
     $options = $eventArgs->getOptions();
     $resource = $eventArgs->getResource();
     $defaultMixins = $this->getDefaultMixins();
     $templateArgs = [];
     $hasMultiFieldValidator = array_key_exists(MultiFieldValidator::getResourceName($metadata->name), $metadata->generator);
     $params = [];
     if ($hasMultiFieldValidator) {
         $defaultMids = $defaultMixins['form']['withValidator'];
     } else {
         $defaultMids = $defaultMixins['form']['simple'];
     }
     if (isset($options['mixins'])) {
         $templateArgs['dependencyMids'] = $options['mixins'];
     } else {
         $templateArgs['dependencyMids'] = $defaultMids;
     }
     $templateArgs['mixins'] = $this->namesFromMids($templateArgs['dependencyMids']);
     $templateArgs['dependencies'] = $this->namesFromMids($templateArgs['dependencyMids']);
     if ($hasMultiFieldValidator) {
         $templateArgs['dependencyMids'][] = MultiFieldValidator::getMid($metadata->name);
         $templateArgs['dependencies'][] = 'MultiFieldValidator';
         $params['validator'] = new Expr('new MultiFieldValidator');
     }
     $params['inputs'] = [];
     foreach ($this->getSerializer()->fieldListForUnserialize($metadata) as $field) {
         $templateArgs['dependencyMids'][] = Input::getMid($metadata->name, $field);
         $templateArgs['dependencies'][] = ucfirst($field) . 'Input';
         $params['inputs'][] = new Expr('new ' . ucfirst($field) . 'Input');
     }
     $templateArgs['dependencyMids'] = ',' . $this->indent($this->implodeMids($templateArgs['dependencyMids']));
     $templateArgs['dependencies'] = ',' . $this->indent($this->implodeNames($templateArgs['dependencies']));
     $templateArgs['mixins'] = $this->indent($this->implodeNames($templateArgs['mixins']), 12) . $this->indent("\n", 8);
     $templateArgs['params'] = $this->implodeParams($params);
     $templateArgs['comment'] = $this->indent("// Will return a form for {$metadata->name}");
     $resource->content = $this->populateTemplate(file_get_contents(__DIR__ . '/Template/Module.js.template'), $templateArgs);
     $this->persistToFile($this->getFilePath($metadata->name), $resource->content);
 }
 public function postBuildMetadata(LoadClassMetadataEventArgs $eventArgs)
 {
     $metadata = $eventArgs->getClassMetadata();
     if (!isset($metadata->generator)) {
         return;
     }
     //Add implied generatable inputs
     if (array_key_exists(Generator\Form::getResourceName($metadata->name), $metadata->generator)) {
         foreach ($this->getSerializer()->fieldListForUnserialize($metadata) as $field) {
             if (!array_key_exists(Generator\Input::getResourceName($metadata->name, $field), $metadata->generator)) {
                 $this->annotationDojoInput(new AnnotationEventArgs($metadata, EventType::field, new Sds\Dojo\Input([]), $metadata->reflFields[$field], $eventArgs->getDocumentManager()->getEventManager()));
             }
         }
     }
     //Add implied generatable validators
     foreach ($this->getSerializer()->fieldListForUnserialize($metadata) as $field) {
         if (array_key_exists(Generator\Input::getResourceName($metadata->name, $field), $metadata->generator) && array_key_exists($field, $metadata->validator['fields']) && !array_key_exists(Generator\Validator::getResourceName($metadata->name, $field), $metadata->generator)) {
             $this->annotationDojoValidator(new AnnotationEventArgs($metadata, EventType::field, new Sds\Dojo\Validator([]), $metadata->reflFields[$field], $eventArgs->getDocumentManager()->getEventManager()));
         }
     }
     //Add implied multifieldvalidator
     if ((array_key_exists(Generator\Form::getResourceName($metadata->name), $metadata->generator) || array_key_exists(Generator\ModelValidator::getResourceName($metadata->name), $metadata->generator)) && array_key_exists('document', $metadata->validator) && !array_key_exists(Generator\MultiFieldValidator::getResourceName($metadata->name), $metadata->generator)) {
         $this->annotationDojoMultiFieldValidator(new AnnotationEventArgs($metadata, EventType::document, new Sds\Dojo\MultiFieldValidator([]), $metadata->reflClass, $eventArgs->getDocumentManager()->getEventManager()));
     }
 }