示例#1
0
文件: TestCase.php 项目: meniam/model
 protected function setUp()
 {
     parent::setUp();
     $cluster = new \Model\Cluster();
     $schema = $this->getSchema(true);
     $cluster->addSchema($schema);
     /** @var Generator generator */
     if (!self::$generator) {
         self::$generator = new Generator();
         $runString = "--output-dir=" . GENERATE_OUTPUT . ' --db-user='******' --db-password='******' --db-schema=' . DB_NAME . ' --db-host=' . DB_HOST;
         //$this->getDb(), $cluster, GENERATE_OUTPUT
         self::$generator->run($runString);
     }
 }
示例#2
0
 public function testGetSchema()
 {
     $this->assertInstanceOf('Model\\Generator', $this->generator);
     $this->assertNull($this->generator->getCluster());
 }
 public function createAction()
 {
     $tableName = $this->dispatcher->getParam('table');
     $formData = [];
     $dbFields = $this->db->describeColumns($tableName);
     $tableAlias = '';
     if ($this->request->hasPost('fsubmit')) {
         // if ($this->security->checkToken()) {
         $formData['columnsRedefined'] = [];
         $formData['fproperty'] = $this->request->getPost('fproperty', null, []);
         $formData['fnullable'] = $this->request->getPost('fnullable', null, []);
         $formData['ffilterable'] = $this->request->getPost('ffilterable', null, []);
         $formData['fsortable'] = $this->request->getPost('fsortable', null, []);
         $formData['fsearchable'] = $this->request->getPost('fsearchable', null, []);
         $formData['fconstant'] = $this->request->getPost('fconstant', null, []);
         $formData['fexclude_i'] = $this->request->getPost('fexclude_i', null, []);
         $formData['fexclude_ae'] = $this->request->getPost('fexclude_ae', null, []);
         $formData['fvalidation'] = $this->request->getPost('fvalidation', null, []);
         $formData['finputtype'] = $this->request->getPost('finputtype', null, []);
         $formData['flabel'] = $this->request->getPost('flabel', null, []);
         $formData['ftype'] = $this->request->getPost('ftype', null, []);
         $formData['fmodelname'] = $this->request->getPost('fmodelname', null, '');
         $formData['fmodelextends'] = $this->request->getPost('fmodelextends', null, '');
         $formData['fprimary'] = $this->request->getPost('fprimary', null, '');
         $formData['fcontrollername'] = $this->request->getPost('fcontrollername', null, '');
         $formData['fmodulename'] = $this->request->getPost('fmodulename', null, '');
         $formData['frecordperpage'] = $this->request->getPost('frecordperpage', null, '1');
         $formData['fcontrollertype'] = $this->request->getPost('fcontrollertype', null, 'normal');
         //Property
         foreach ($formData['fproperty'] as $columnname => $value) {
             $formData['columnsRedefined'][$columnname]['property'] = $value;
         }
         //Nullable
         foreach ($formData['fnullable'] as $columnname => $value) {
             $formData['columnsRedefined'][$columnname]['nullable'] = $value;
         }
         //Filterable
         foreach ($formData['ffilterable'] as $columnname => $value) {
             $formData['columnsRedefined'][$columnname]['filterable'] = $value;
         }
         //Sortable
         foreach ($formData['fsortable'] as $columnname => $value) {
             $formData['columnsRedefined'][$columnname]['sortable'] = $value;
         }
         //Searchable
         foreach ($formData['fsearchable'] as $columnname => $value) {
             $formData['columnsRedefined'][$columnname]['searchable'] = $value;
         }
         //Constant
         foreach ($formData['fconstant'] as $columnname => $value) {
             $formData['columnsRedefined'][$columnname]['constant'] = $value;
         }
         //Type
         foreach ($formData['ftype'] as $columnname => $value) {
             $formData['columnsRedefined'][$columnname]['type'] = $value;
         }
         //Exclude Add/Edit
         foreach ($formData['fexclude_ae'] as $columnname => $value) {
             $formData['columnsRedefined'][$columnname]['exclude_ae'] = $value;
         }
         //Exclude Index
         foreach ($formData['fexclude_i'] as $columnname => $value) {
             $formData['columnsRedefined'][$columnname]['exclude_i'] = $value;
         }
         //PrimaryKey
         foreach ($formData['fprimary'] as $columnname => $value) {
             $formData['columnsRedefined'][$columnname]['primary'] = $value;
         }
         //Validation
         foreach ($formData['fvalidation'] as $columnname => $value) {
             $formData['columnsRedefined'][$columnname]['validation'] = $value;
         }
         //InputType
         foreach ($formData['finputtype'] as $columnname => $value) {
             $formData['columnsRedefined'][$columnname]['inputtype'] = $value;
         }
         //Label Controller
         foreach ($formData['flabel'] as $columnname => $value) {
             $formData['columnsRedefined'][$columnname]['label'] = $value;
         }
         //generate model
         $this->generatemodel($formData['columnsRedefined'], $tableName, $formData['fmodelname'], $formData['fmodelextends']);
         //generate controller
         if ($formData['fcontrollertype'] == 'normal') {
             $this->generatecontroller($formData['columnsRedefined'], $formData['fmodulename'], $formData['fcontrollername'], $formData['fmodelname'], $formData['frecordperpage']);
         } else {
         }
         //generate view
         if ($formData['fcontrollertype'] == 'normal') {
             $this->generateview($formData['columnsRedefined'], $formData['fmodulename'], $formData['fcontrollername'], $formData['fmodelname']);
         } else {
         }
         //generate language
         if ($formData['fcontrollertype'] == 'normal') {
             $this->generatelanguage($formData['columnsRedefined'], $formData['fcontrollername']);
         } else {
         }
         if (strlen($this->message) > 0) {
             $this->flash->success($this->message);
             $this->logger->name = 'GENERATOR';
             $this->logger->info($this->message);
         } else {
             $this->flash->error('ERROR! GENERATING FAILED.');
         }
         // }
     }
     foreach ($dbFields as $field) {
         $column = [];
         $label = str_replace('_', ' ', $field->getName());
         $typeName = substr(\Model\Generator::getTypeName($field->getType()), 5);
         $inputType = $typeName == 'TEXT' ? 'textarea' : 'text';
         $column = ['name' => $field->getName(), 'property' => str_replace('_', '', $field->getName()), 'type' => $field->getType(), 'typename' => $typeName, 'size' => $field->getSize(), 'isNumeric' => $field->isNumeric(), 'isPrimary' => $field->isPrimary(), 'isNotNull' => $field->isNotNull(), 'label' => ucfirst($label), 'inputtype' => $inputType];
         if ($field->isPrimary()) {
             $formData['primarykey'] = $field->getName();
             $tableAlias = substr($formData['primarykey'], 0, strpos($formData['primarykey'], '_') + 1);
         }
         if (strlen($tableAlias) > 0) {
             $column['property'] = str_replace('_', '', str_replace($tableAlias, '', $field->getName()));
         }
         $formData['columns'][] = $column;
     }
     // Indexes List
     $formData['indexesCol'] = array();
     $myIndexList = $this->db->describeIndexes($tableName, $this->config->app_db->name);
     if ($myIndexList == true) {
         foreach ($myIndexList as $indexes) {
             foreach ($indexes->getColumns() as $indexCol) {
                 $formData['indexesCol'][] = $indexCol;
             }
         }
     }
     // Assign table Alias
     $formData['tableAlias'] = $tableAlias;
     // Assign Model Class name
     $formData['modelName'] = '';
     $tmpModelname = str_replace($this->config->app_db->prefix, '', $tableName);
     $tmpModelname = explode('_', $tmpModelname);
     foreach ($tmpModelname as $modelname) {
         $formData['modelName'] .= ucfirst($modelname);
     }
     // Assign Controller Class name
     $formData['controllerName'] = ucfirst(strtolower($formData['modelName']));
     // var_dump($formData);
     // die;
     $this->tag->prependTitle('Code Generator');
     $this->breadcrumb->add('Code Generator', 'admin/codegenerator');
     $this->breadcrumb->add('Table "' . $tableName . '"', 'admin/codegenerator/create');
     $this->view->setVars(['breadcrumb' => $this->breadcrumb->generate(), 'tableName' => $tableName, 'formData' => $formData, 'blockTable' => $this->blockTable]);
 }