Пример #1
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     $directory = sprintf('%s/templates/core/druplicon/', $this->appRoot . DRUPAL_CONSOLE);
     $finder = new Finder();
     $finder->files()->name('*.twig')->in($directory);
     $templates = [];
     foreach ($finder as $template) {
         $templates[] = $template->getRelativePathname();
     }
     $druplicon = $this->renderer->render(sprintf('core/druplicon/%s', $templates[array_rand($templates)]));
     $io->writeln($druplicon);
 }
 /**
  * Generator Entity.
  *
  * @param string $module             Module name
  * @param string $entity_name        Entity machine name
  * @param string $entity_class       Entity class name
  * @param string $label              Entity label
  * @param string $base_path          Base path
  * @param string $is_translatable    Translation configuration
  * @param string $bundle_entity_type (Config) entity type acting as bundle
  * @param bool $revisionable      Revision configuration
  */
 public function generate($module, $entity_name, $entity_class, $label, $base_path, $is_translatable, $bundle_entity_type = null, $revisionable = false)
 {
     $parameters = ['module' => $module, 'entity_name' => $entity_name, 'entity_class' => $entity_class, 'label' => $label, 'bundle_entity_type' => $bundle_entity_type, 'base_path' => $base_path, 'is_translatable' => $is_translatable, 'revisionable' => $revisionable];
     $this->renderFile('module/permissions-entity-content.yml.twig', $this->extensionManager->getModule($module)->getPath() . '/' . $module . '.permissions.yml', $parameters, FILE_APPEND);
     $this->renderFile('module/links.menu-entity-content.yml.twig', $this->extensionManager->getModule($module)->getPath() . '/' . $module . '.links.menu.yml', $parameters, FILE_APPEND);
     $this->renderFile('module/links.task-entity-content.yml.twig', $this->extensionManager->getModule($module)->getPath() . '/' . $module . '.links.task.yml', $parameters, FILE_APPEND);
     $this->renderFile('module/links.action-entity-content.yml.twig', $this->extensionManager->getModule($module)->getPath() . '/' . $module . '.links.action.yml', $parameters, FILE_APPEND);
     $this->renderFile('module/src/accesscontrolhandler-entity-content.php.twig', $this->extensionManager->getModule($module)->getSourcePath() . '/' . $entity_class . 'AccessControlHandler.php', $parameters);
     if ($is_translatable) {
         $this->renderFile('module/src/entity-translation-handler.php.twig', $this->extensionManager->getModule($module)->getSourcePath() . '/' . $entity_class . 'TranslationHandler.php', $parameters);
     }
     $this->renderFile('module/src/Entity/interface-entity-content.php.twig', $this->extensionManager->getModule($module)->getEntityPath() . '/' . $entity_class . 'Interface.php', $parameters);
     $this->renderFile('module/src/Entity/entity-content.php.twig', $this->extensionManager->getModule($module)->getEntityPath() . '/' . $entity_class . '.php', $parameters);
     $this->renderFile('module/src/entity-content-route-provider.php.twig', $this->extensionManager->getModule($module)->getSourcePath() . '/' . $entity_class . 'HtmlRouteProvider.php', $parameters);
     $this->renderFile('module/src/Entity/entity-content-views-data.php.twig', $this->extensionManager->getModule($module)->getEntityPath() . '/' . $entity_class . 'ViewsData.php', $parameters);
     $this->renderFile('module/src/listbuilder-entity-content.php.twig', $this->extensionManager->getModule($module)->getSourcePath() . '/' . $entity_class . 'ListBuilder.php', $parameters);
     $this->renderFile('module/src/Entity/Form/entity-settings.php.twig', $this->extensionManager->getModule($module)->getFormPath() . '/' . $entity_class . 'SettingsForm.php', $parameters);
     $this->renderFile('module/src/Entity/Form/entity-content.php.twig', $this->extensionManager->getModule($module)->getFormPath() . '/' . $entity_class . 'Form.php', $parameters);
     $this->renderFile('module/src/Entity/Form/entity-content-delete.php.twig', $this->extensionManager->getModule($module)->getFormPath() . '/' . $entity_class . 'DeleteForm.php', $parameters);
     $this->renderFile('module/entity-content-page.php.twig', $this->extensionManager->getModule($module)->getPath() . '/' . $entity_name . '.page.inc', $parameters);
     $this->renderFile('module/templates/entity-html.twig', $this->extensionManager->getModule($module)->getTemplatePath() . '/' . $entity_name . '.html.twig', $parameters);
     if ($revisionable) {
         $this->renderFile('module/src/Entity/Form/entity-content-revision-delete.php.twig', $this->extensionManager->getModule($module)->getFormPath() . '/' . $entity_class . 'RevisionDeleteForm.php', $parameters);
         $this->renderFile('module/src/Entity/Form/entity-content-revision-revert-translation.php.twig', $this->extensionManager->getModule($module)->getFormPath() . '/' . $entity_class . 'RevisionRevertTranslationForm.php', $parameters);
         $this->renderFile('module/src/Entity/Form/entity-content-revision-revert.php.twig', $this->extensionManager->getModule($module)->getFormPath() . '/' . $entity_class . 'RevisionRevertForm.php', $parameters);
         $this->renderFile('module/src/entity-storage.php.twig', $this->extensionManager->getModule($module)->getSourcePath() . '/' . $entity_class . 'Storage.php', $parameters);
         $this->renderFile('module/src/interface-entity-storage.php.twig', $this->extensionManager->getModule($module)->getSourcePath() . '/' . $entity_class . 'StorageInterface.php', $parameters);
         $this->renderFile('module/src/Controller/entity-controller.php.twig', $this->extensionManager->getModule($module)->getControllerPath() . '/' . $entity_class . 'Controller.php', $parameters);
     }
     if ($bundle_entity_type) {
         $this->renderFile('module/templates/entity-with-bundle-content-add-list-html.twig', $this->extensionManager->getModule($module)->getTemplatePath() . '/' . str_replace('_', '-', $entity_name) . '-content-add-list.html.twig', $parameters);
         // Check for hook_theme() in module file and warn ...
         $module_filename = $this->extensionManager->getModule($module)->getPath() . '/' . $module . '.module';
         // Check if the module file exists.
         if (!file_exists($module_filename)) {
             $this->renderFile('module/module.twig', $this->extensionManager->getModule($module)->getPath() . '/' . $module . '.module', ['machine_name' => $module, 'description' => '']);
         }
         $module_file_contents = file_get_contents($module_filename);
         if (strpos($module_file_contents, 'function ' . $module . '_theme') !== false) {
             $this->io->warning(["It looks like you have a hook_theme already declared", "Please manually merge the two hook_theme() implementations in", $module_filename]);
         }
         $this->renderFile('module/src/Entity/entity-content-with-bundle.theme.php.twig', $this->extensionManager->getModule($module)->getPath() . '/' . $module . '.module', $parameters, FILE_APPEND);
         if (strpos($module_file_contents, 'function ' . $module . '_theme_suggestions_' . $entity_name) !== false) {
             $this->io->warning(["It looks like you have a hook_theme_suggestions_HOOK already declared", "Please manually merge the two hook_theme_suggestions_HOOK() implementations in", $module_filename]);
         }
         $this->renderFile('module/src/Entity/entity-content-with-bundle.theme_hook_suggestions.php.twig', $this->extensionManager->getModule($module)->getPath() . '/' . $module . '.module', $parameters, FILE_APPEND);
     }
     $content = $this->twigrenderer->render('module/src/Entity/entity-content.theme.php.twig', $parameters);
     //@TODO:
     /**
     if ($this->isLearning()) {
         $this->io->commentBlock(
             [
                 'Add this to your hook_theme:',
                 $content
             ]
         );
     }
     */
 }