addArgument( 'controller-class', InputArgument::OPTIONAL, 'Choose a name for your CRUD controller class (e.g. FooAdminController)' ) ->addArgument( 'entity-class', InputArgument::OPTIONAL, 'Define the entity (e.g. App\Entity\Foo)' ) ->addArgument( 'repository-query-class', InputArgument::OPTIONAL, 'Define the repository query (e.g. App\Repository\FooRepositoryQuery)' ) ->addArgument( 'factory-class', InputArgument::OPTIONAL, 'Define the factory (e.g. App\Factory\FooFactory)' ) ->addArgument( 'form-class', InputArgument::OPTIONAL, 'Define the form (e.g. App\Form\FooType)' ) ->setHelp('') ; } public function generate(InputInterface $input, ConsoleStyle $io, Generator $generator) { $controllerClassNameDetails = $generator->createClassNameDetails( $input->getArgument('controller-class'), 'Controller\\', 'Controller' ); $entity = u($input->getArgument('entity-class')); $lastBackSlashIndex = $entity->indexOfLast('\\'); $route = u($entity->slice($lastBackSlashIndex))->snake(); $options = [ 'entity' => (string) $entity, 'route' => (string) $route, 'repository_query' => $input->getArgument('repository-query-class'), 'form' => $input->getArgument('form-class'), 'factory' => $input->getArgument('factory-class'), ]; $controllerPath = $generator->generateController( $controllerClassNameDetails->getFullName(), __DIR__.'/../Resources/maker/crud-controller/CrudController.tpl.php', $options ); $generator->writeChanges(); $this->writeSuccessMessage($io); $io->text('Next: Open your new controller class and configure it!'); } public function configureDependencies(DependencyBuilder $dependencies) { $dependencies->addClassDependency( Annotation::class, 'doctrine/annotations' ); } }