/** * Create view helper factory * * @return bool */ public function createViewHelperFactory() { // get needed options to shorten code $moduleName = $this->requestOptions->getModuleName(); $viewHelperClass = $this->requestOptions->getViewHelperClass(); $viewHelperPath = $this->requestOptions->getViewHelperPath(); $factoryClass = $viewHelperClass . 'Factory'; $factoryFile = $factoryClass . '.php'; $factoryFilePath = $viewHelperPath . $factoryFile; // check for factory class if (file_exists($factoryFilePath)) { throw new GeneratorException('The factory for this view helper exists already.'); } // create controller class with class generator $code = new ClassGenerator(); $code->setNamespaceName($moduleName . '\\View\\Helper'); $code->addUse('Zend\\ServiceManager\\FactoryInterface'); $code->addUse('Zend\\ServiceManager\\ServiceLocatorInterface'); $code->setName($factoryClass); $code->setImplementedInterfaces(array('FactoryInterface')); $code->addMethodFromGenerator($this->generateCreateServiceMethod($viewHelperClass, 'viewHelperManager', 'viewHelper')); // add optional doc block if ($this->flagCreateApiDocs) { $code->setDocBlock(new DocBlockGenerator('Factory for ' . $viewHelperClass, 'Please add a proper description for the ' . $viewHelperClass . ' factory', array($this->generatePackageTag($moduleName)))); } // create file with file generator $file = new FileGenerator(); $file->setClass($code); // add optional doc block if ($this->flagCreateApiDocs) { $file->setDocBlock(new DocBlockGenerator('This file was generated by FrilleZFTool.', null, array($this->generatePackageTag($moduleName), $this->generateSeeTag()))); } // write controller class if (!file_put_contents($factoryFilePath, $file->generate())) { return false; } return true; }
/** * Create a view helper * * @return ConsoleModel */ public function viewHelperAction() { // check for help mode if ($this->requestOptions->getFlagHelp()) { return $this->viewHelperHelp(); } // output header $this->consoleHeader('Creating new view helper'); // get needed options to shorten code $path = $this->requestOptions->getPath(); $flagWithFactory = $this->requestOptions->getFlagWithFactory(); $moduleName = $this->requestOptions->getModuleName(); $modulePath = $this->requestOptions->getModulePath(); $viewHelperName = $this->requestOptions->getViewHelperName(); $viewHelperPath = $this->requestOptions->getViewHelperPath(); $viewHelperClass = $this->requestOptions->getViewHelperClass(); $viewHelperFile = $this->requestOptions->getViewHelperFile(); // check for module path and application config if (!file_exists($path . '/module') || !file_exists($path . '/config/application.config.php')) { return $this->sendError(array(array(Color::NORMAL => 'The path '), array(Color::RED => $path), array(Color::NORMAL => ' doesn\'t contain a ZF2 application.'))); } // check if helper name provided if (!$viewHelperName) { return $this->sendError(array(array(Color::NORMAL => 'Please provide the view helper name as parameter.'))); } // check if module name provided if (!$moduleName) { return $this->sendError(array(array(Color::NORMAL => 'Please provide the module name as parameter.'))); } // set mode if (file_exists($viewHelperPath . $viewHelperFile)) { $mode = 'update'; } else { $mode = 'insert'; } // check if view helper exists already in module if ($mode == 'update' && !$flagWithFactory) { return $this->sendError(array(array(Color::NORMAL => 'The view helper '), array(Color::RED => $viewHelperName), array(Color::NORMAL => ' already exists in module '), array(Color::RED => $moduleName), array(Color::NORMAL => '.'))); } // create view helper if ($mode == 'insert') { // write start message $this->console->write(' => Creating view helper '); $this->console->write($viewHelperName, Color::GREEN); $this->console->write(' in module '); $this->console->writeLine($moduleName, Color::GREEN); // create view helper class $viewHelperFlag = $this->moduleGenerator->createViewHelper(); // write start message $this->console->write(' => Adding view helper configuration for '); $this->console->writeLine($moduleName, Color::GREEN); // add view helper configuration to module $moduleConfig = $this->moduleConfigurator->addViewHelperConfig(); } // check for factory flag if ($flagWithFactory) { // create view helper factory class try { $factoryFlag = $this->moduleGenerator->createViewHelperFactory(); } catch (GeneratorException $e) { return $this->sendError(array(array(Color::NORMAL => 'The factory for the view helper '), array(Color::RED => $viewHelperName), array(Color::NORMAL => ' of module '), array(Color::RED => $moduleName), array(Color::NORMAL => ' exists already.'))); } // write start message $this->console->write(' => Creating factory for view helper '); $this->console->write($viewHelperName, Color::GREEN); $this->console->write(' in module '); $this->console->writeLine($moduleName, Color::GREEN); // add view helper factory configuration to module $moduleConfig = $this->moduleConfigurator->addViewHelperFactoryConfig(); } else { $factoryFlag = false; } // check for module config updates if ($moduleConfig) { // update module configuration $this->moduleGenerator->updateConfiguration($moduleConfig, $modulePath . '/config/module.config.php'); // write start message $this->console->write(' => Updating configuration for module '); $this->console->writeLine($moduleName, Color::GREEN); } $this->console->writeLine(); $this->console->write(' Done ', Color::NORMAL, Color::CYAN); $this->console->write(' '); // write message if ($factoryFlag) { $this->console->write('The view helper '); $this->console->write($viewHelperName, Color::GREEN); $this->console->write(' has been created with a factory in module '); $this->console->writeLine($moduleName, Color::GREEN); } else { $this->console->write('The view helper '); $this->console->write($viewHelperName, Color::GREEN); $this->console->write(' has been created in module '); $this->console->writeLine($moduleName, Color::GREEN); } $this->console->writeLine(); $this->console->writeLine(' => In order to use the view helper add the following code to any view script.'); $this->console->writeLine(' <?php echo $this->' . lcfirst($viewHelperName) . '(); ?>', Color::CYAN); // output footer $this->consoleFooter('view helper was successfully created'); }