get('entity_type.manager')); } /** * {@inheritdoc} */ protected function generate(array &$vars, AssetCollection $assets): void { $ir = $this->createInterviewer($vars); $vars['machine_name'] = $ir->askMachineName(); $vars['plugin_label'] = $ir->askPluginLabel('Action label'); $vars['plugin_id'] = $ir->askPluginId(); $vars['class'] = $ir->askPluginClass(); $vars['category'] = $ir->ask('Action category', 'Custom'); // @todo Create a helper for this. $definitions = \array_filter( $this->entityTypeManager->getDefinitions(), static fn (EntityTypeInterface $definition): bool => $definition instanceof ContentEntityTypeInterface, ); $entity_type_question = new Question('Entity type to apply the action', 'node'); $entity_type_question->setValidator(new RequiredMachineName()); $entity_type_question->setAutocompleterValues(\array_keys($definitions)); $vars['entity_type'] = $this->io()->askQuestion($entity_type_question); $vars['configurable'] = $ir->confirm('Make the action configurable?', FALSE); $vars['services'] = $ir->askServices(FALSE); $assets->addFile('src/Plugin/Action/{class}.php', 'action.twig'); if ($vars['configurable']) { $assets->addSchemaFile()->template('schema.twig'); } } }