subentity-1.x-dev/src/Drush/Generators/SubEntityGenerator.php

src/Drush/Generators/SubEntityGenerator.php
<?php

namespace Drupal\subentity\Drush\Generators;

use DrupalCodeGenerator\Asset\AssetCollection;
use DrupalCodeGenerator\Attribute\Generator;
use DrupalCodeGenerator\Command\BaseGenerator;
use DrupalCodeGenerator\GeneratorType;
use DrupalCodeGenerator\Utils;

/**
 * A generator for a subentity.
 */
#[Generator(
  name: 'entity:subentity',
  description: 'Generates a subentity',
  aliases: ['subentity'],
  templatePath: __DIR__ . '/../../../templates/',
  type: GeneratorType::MODULE_COMPONENT,
)]
final class SubEntityGenerator extends BaseGenerator {

  /**
   * {@inheritdoc}
   */
  protected function generate(array &$vars, AssetCollection $assets): void {
    $interviewer = $this->createInterviewer($vars);

    $vars['machine_name'] = $interviewer->askMachineName();
    $vars['name'] = $interviewer->askName();

    $vars['label'] = $interviewer->ask('Entity label', '{name}');
    $vars['entity_class'] = $interviewer->ask('Class name', '{label|camelize}');
    $vars['bundle'] = $interviewer->confirm('Has bundle?', FALSE);
    $vars['entity_name'] = Utils::human2machine($vars['entity_class']);

    $assets->addFile(
      'src/Entity/{entity_class}.php',
      'generator/subentity.php.twig'
    );

    $assets->addFile(
      '{machine_name}.links.menu.yml',
      'generator/links.menu.yml.twig'
    )->prependIfExists();

    $assets->addFile(
      '{machine_name}.links.task.yml',
      'generator/links.task.yml.twig'
    )->prependIfExists();

    $assets->addFile(
      '{machine_name}.routing.yml',
      'generator/routing.yml.twig'
    )->prependIfExists();

    if ($vars['bundle']) {
      $assets->addFile(
        'src/Entity/{entity_class}Type.php',
        'generator/subentity_type.php.twig'
      );

      $assets->addFile(
        'config/schema/{entity_name}_type.yml',
        'generator/subentity_type.schema.yml.twig'
      );

      $assets->addFile(
        '{machine_name}.links.action.yml',
        'generator/links.action.yml.twig'
      );
    }
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc