/** * Generates set of code based on data. * * @return array */ public function generate() { $this->prepareData($this->data); $columnFields = ['name', 'description', 'label']; $table = $this->describe->getTable($this->data['name']); foreach ($table as $column) { if ($column->isAutoIncrement()) { continue; } $field = strtolower($column->getField()); $method = 'set_' . $field; $this->data['camel'][$field] = lcfirst(camelize($method)); $this->data['underscore'][$field] = underscore($method); array_push($this->data['columns'], $field); if ($column->isForeignKey()) { $referencedTable = Tools::stripTableSchema($column->getReferencedTable()); $this->data['foreignKeys'][$field] = $referencedTable; array_push($this->data['models'], $referencedTable); $dropdown = ['list' => plural($referencedTable), 'table' => $referencedTable, 'field' => $field]; if (!in_array($field, $columnFields)) { $field = $this->describe->getPrimaryKey($referencedTable); $dropdown['field'] = $field; } array_push($this->data['dropdowns'], $dropdown); } } return $this->data; }
/** * Executes the command. * * @param \Symfony\Component\Console\Input\InputInterface $input * @param \Symfony\Component\Console\Output\OutputInterface $output * @return object|\Symfony\Component\Console\Output\OutputInterface */ protected function execute(InputInterface $input, OutputInterface $output) { $name = Tools::stripTableSchema(plural($input->getArgument('name'))); if ($input->getOption('keep')) { $name = Tools::stripTableSchema($input->getArgument('name')); } $validator = new ViewValidator($name); if ($validator->fails()) { $message = $validator->getMessage(); return $output->writeln('<error>' . $message . '</error>'); } $data = ['isBootstrap' => $input->getOption('bootstrap'), 'isCamel' => $input->getOption('camel'), 'name' => $input->getArgument('name')]; $generator = new ViewGenerator($this->describe, $data); $result = $generator->generate(); $results = ['create' => $this->renderer->render('Views/create.tpl', $result), 'edit' => $this->renderer->render('Views/edit.tpl', $result), 'index' => $this->renderer->render('Views/index.tpl', $result), 'show' => $this->renderer->render('Views/show.tpl', $result)]; $filePath = APPPATH . 'views/' . $name; $create = new File($filePath . '/create.php'); $edit = new File($filePath . '/edit.php'); $index = new File($filePath . '/index.php'); $show = new File($filePath . '/show.php'); $create->putContents($results['create']); $edit->putContents($results['edit']); $index->putContents($results['index']); $show->putContents($results['show']); $create->close(); $edit->close(); $index->close(); $show->close(); $message = 'The views folder "' . $name . '" has been created successfully!'; return $output->writeln('<info>' . $message . '</info>'); }
/** * Generates set of code based on data. * * @return array */ public function generate() { $this->prepareData($this->data); foreach ($this->data['columns'] as $column) { $field = strtolower($column->getField()); $this->data['camel'][$field] = $this->transformField($field, 'camelize'); $this->data['underscore'][$field] = $this->transformField($field, 'underscore'); if ($column->isForeignKey()) { $referencedTable = Tools::stripTableSchema($column->getReferencedTable()); $this->data['foreignKeys'][$field] = plural($referencedTable); $singular = $field . '_singular'; $this->data['foreignKeys'][$singular] = singular($referencedTable); $this->data = $this->getPrimaryKey($this->data, $field, $referencedTable); } } return $this->data; }
/** * Generates set of code based on data. * * @return array */ public function generate() { $this->prepareData($this->data); foreach ($this->data['columns'] as $column) { $field = strtolower($column->getField()); $this->data['camel'][$field] = $this->transformField($field, 'camelize'); $this->data['underscore'][$field] = $this->transformField($field, 'underscore'); if ($column->isForeignKey()) { $field = $column->getField(); $referencedTable = $column->getReferencedTable(); array_push($this->data['indexes'], $field); $this->data = $this->getPrimaryKey($this->data, $field, $referencedTable); } $column->setReferencedTable(Tools::stripTableSchema($column->getReferencedTable())); } return $this->data; }
/** * Generates set of code based on data. * * @return array */ public function generate() { $this->prepareData($this->data); foreach ($this->data['columns'] as $column) { $field = strtolower($column->getField()); $accessor = 'get_' . $field; $mutator = 'set_' . $field; $this->data['camel'][$field] = ['field' => lcfirst(camelize($field)), 'accessor' => lcfirst(camelize($accessor)), 'mutator' => lcfirst(camelize($mutator))]; $this->data['underscore'][$field] = ['field' => lcfirst(underscore($field)), 'accessor' => lcfirst(underscore($accessor)), 'mutator' => lcfirst(underscore($mutator))]; if ($column->isForeignKey()) { $field = $column->getField(); array_push($this->data['indexes'], $field); $this->data['primaryKeys'][$field] = 'get_' . $this->describe->getPrimaryKey($column->getReferencedTable()); if ($this->data['isCamel']) { $this->data['primaryKeys'][$field] = camelize($this->data['primaryKeys'][$field]); } } $column->setReferencedTable(Tools::stripTableSchema($column->getReferencedTable())); } return $this->data; }
/** * Generates set of code based on data. * * @return array */ public function generate() { $this->prepareData($this->data); foreach ($this->data['columns'] as $column) { $field = strtolower($column->getField()); $accessor = 'get_' . $field; $mutator = 'set_' . $field; $this->data['camel'][$field] = ['field' => lcfirst(camelize($field)), 'accessor' => lcfirst(camelize($accessor)), 'mutator' => lcfirst(camelize($mutator))]; $this->data['underscore'][$field] = ['field' => lcfirst(underscore($field)), 'accessor' => lcfirst(underscore($accessor)), 'mutator' => lcfirst(underscore($mutator))]; if ($column->isForeignKey()) { $referencedTable = Tools::stripTableSchema($column->getReferencedTable()); $this->data['foreignKeys'][$field] = plural($referencedTable); $singular = $field . '_singular'; $this->data['foreignKeys'][$singular] = singular($referencedTable); $this->data['primaryKeys'][$field] = 'get_' . $this->describe->getPrimaryKey($referencedTable); if ($this->data['isCamel']) { $this->data['primaryKeys'][$field] = camelize($this->data['primaryKeys'][$field]); } } } return $this->data; }