/** * * @param \Sds\DoctrineExtensions\Generator\GenerateEventArgs $eventArgs */ public function generatorDojoJsonRest(GenerateEventArgs $eventArgs) { $options = $eventArgs->getOptions(); $resource = $eventArgs->getResource(); $metadata = $eventArgs->getDocumentManager()->getClassMetadata($eventArgs->getClassName()); $defaultMixins = $this->getDefaultMixins(); $templateArgs = []; $params = []; if (isset($options['mixins'])) { $templateArgs['dependencyMids'] = $options['mixins']; } else { $templateArgs['dependencyMids'] = $defaultMixins['store']['jsonRest']; } $templateArgs['mixins'] = $this->namesFromMids($templateArgs['dependencyMids']); $templateArgs['dependencies'] = $this->namesFromMids($templateArgs['dependencyMids']); $modelMid = Model::getMid($metadata->name); $pieces = explode('/', $modelMid); $model = $pieces[count($pieces) - 1]; $templateArgs['dependencyMids'][] = $modelMid; $templateArgs['dependencies'][] = $model; $params['name'] = $metadata->collection; $params['idField'] = $metadata->identifier; if (isset($metadata->rest)) { $params['target'] = $metadata->rest['endpoint']; } else { $params['target'] = $metadata->collection; } $params['model'] = new Expr($model); $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 create a dojo JsonRest store for {$metadata->name}"); $resource->content = $this->populateTemplate(file_get_contents(__DIR__ . '/Template/Module.js.template'), $templateArgs); $this->persistToFile($this->getFilePath($metadata->name), $resource->content); }