public function actionControllerCommand($packageKey, $controllerName, $generateActions = false, $generateTemplates = true, $generateRelated = false, $force = false)
{
$subpackageName = '';
if (strpos($packageKey, '/') !== false) {
list($packageKey, $subpackageName) = explode('/', $packageKey, 2);
}
$this->validatePackageKey($packageKey);
if (!$this->packageManager->isPackageAvailable($packageKey)) {
if ($generateRelated === false) {
$this->outputLine('Package "%s" is not available.', array($packageKey));
$this->outputLine('Hint: Use --generate-related for creating it!');
exit(2);
}
$this->packageManager->createPackage($packageKey);
}
$generatedFiles = array();
$generatedModels = false;
$controllerNames = Arrays::trimExplode(',', $controllerName);
if ($generateActions === true) {
foreach ($controllerNames as $currentControllerName) {
$modelClassName = str_replace('.', '\\', $packageKey) . '\\Domain\\Model\\' . $currentControllerName;
if (!class_exists($modelClassName)) {
if ($generateRelated === true) {
$generatedFiles += $this->generatorService->generateModel($packageKey, $currentControllerName, array('name' => array('type' => 'string')));
$generatedModels = true;
} else {
$this->outputLine('The model %s does not exist, but is necessary for creating the respective actions.', array($modelClassName));
$this->outputLine('Hint: Use --generate-related for creating it!');
exit(3);
}
}
$repositoryClassName = str_replace('.', '\\', $packageKey) . '\\Domain\\Repository\\' . $currentControllerName . 'Repository';
if (!class_exists($repositoryClassName)) {
if ($generateRelated === true) {
$generatedFiles += $this->generatorService->generateRepository($packageKey, $currentControllerName);
} else {
$this->outputLine('The repository %s does not exist, but is necessary for creating the respective actions.', array($repositoryClassName));
$this->outputLine('Hint: Use --generate-related for creating it!');
exit(4);
}
}
}
}
foreach ($controllerNames as $currentControllerName) {
if ($generateActions === true) {
$generatedFiles += $this->generatorService->generateCrudController($packageKey, $subpackageName, $currentControllerName, $force);
} else {
$generatedFiles += $this->generatorService->generateActionController($packageKey, $subpackageName, $currentControllerName, $force);
}
if ($generateTemplates === true) {
$generatedFiles += $this->generatorService->generateLayout($packageKey, 'Default', $force);
if ($generateActions === true) {
$generatedFiles += $this->generatorService->generateView($packageKey, $subpackageName, $currentControllerName, 'Index', 'Index', $force);
$generatedFiles += $this->generatorService->generateView($packageKey, $subpackageName, $currentControllerName, 'New', 'New', $force);
$generatedFiles += $this->generatorService->generateView($packageKey, $subpackageName, $currentControllerName, 'Edit', 'Edit', $force);
$generatedFiles += $this->generatorService->generateView($packageKey, $subpackageName, $currentControllerName, 'Show', 'Show', $force);
} else {
$generatedFiles += $this->generatorService->generateView($packageKey, $subpackageName, $currentControllerName, 'Index', 'SampleIndex', $force);
}
}
}
$this->outputLine(implode(PHP_EOL, $generatedFiles));
if ($generatedModels === true) {
$this->outputLine('As new models were generated, don\'t forget to update the database schema with the respective doctrine:* commands.');
}
}