/** * Executes the cache clear. * @param InputInterface $input * @param OutputInterface $output * @return void */ protected function execute(InputInterface $input, OutputInterface $output) { $this->writeSection($output, 'Controller generation'); $extensionName = $input->getOption('extension'); $controllerName = $input->getArgument('controller_name'); if (!$extensionName) { throw new \RuntimeException('Parameter extension is required'); } $path = \WFP2Environment::getExtPath() . $extensionName . DIRECTORY_SEPARATOR; if (!is_dir($path)) { throw new \RuntimeException('Path ' . $path . ' does not exists'); } $classesPath = $path . 'Classes' . DIRECTORY_SEPARATOR; if (!is_dir($classesPath)) { mkdir($classesPath); } $controllerPath = $classesPath . 'Controller' . DIRECTORY_SEPARATOR; if (!is_dir($controllerPath)) { mkdir($controllerPath); } if (strpos($controllerName, 'Controller') === false) { $controllerName .= 'Controller'; } $output->writeln('Create new controller ' . $controllerName); /* @var $dialog \Symfony\Component\Console\Helper\DialogHelper */ $dialog = $this->getHelper('dialog'); $actionContent = array(); while ($dialog->askConfirmation($output, 'generate action? [y/n]')) { $actionNameRaw = $actionName = $dialog->ask($output, 'Please insert your action name: '); if (strpos($actionName, 'Action') === false) { $actionName .= 'Action'; } $templatePath = $this->mkdir($path . 'Resources/Private/Templates/' . $input->getArgument('controller_name')); $templateName = ucfirst(strtolower($actionNameRaw)) . '.html'; $this->renderFile('view.html', $templatePath . $templateName, array('controller' => $controllerName, 'action' => $actionName)); $actionContent[] = $this->render('action.php', array('actionname' => $actionName, 'view' => str_replace(\WFP2Environment::getExtPath(), '', $templatePath . $templateName))); } $this->renderFile('controller.php', $controllerPath . $controllerName . '.php', array('name' => $controllerName, 'namespace' => $this->generateNamespaceForExtensionName($extensionName) . '\\Controller', 'body' => implode(PHP_EOL, $actionContent))); $errors = array(); $this->writeGeneratorSummery($output, $errors); }
/** * Returns the skeleton path. * @return string */ protected function getSkeletonPath() { return realpath(sprintf('%s/wfp2_console/skeleton/%s/', \WFP2Environment::getExtPath(), $this->generatorName)) . DIRECTORY_SEPARATOR; }
/** * Gets the extension path. * @param DialogHelper $dialogHelper * @param OutputInterface $output * @return string */ private function getExtensionPath(DialogHelper $dialogHelper, OutputInterface $output) { return $dialogHelper->askAndValidate($output, $this->createQuestion('Enter your package name'), function ($answer) { if (is_dir(\WFP2Environment::getExtPath() . $answer)) { throw new \RuntimeException('Extension ' . $answer . ' already exists'); } return \WFP2Environment::getExtPath() . $answer; }); }