コード例 #1
0
ファイル: Standard.php プロジェクト: dafik/zf-scaffold
 public function render()
 {
     $tableDefinition = $this->getObject('tableDefinition');
     //$tableName = $tableDefinition->getName();
     $tablePhpName = $tableDefinition->getPhpName();
     $this->addVariable('tablePhpName', $tablePhpName);
     $tableQueryClass = $tableDefinition->getPhpName() . 'Query';
     $this->addVariable('tableQueryClass', $tableQueryClass);
     $tablePeerClass = $tableDefinition->getPhpName() . 'Peer';
     $this->addVariable('tablePeerClass', $tablePeerClass);
     $tableFormClassName = $this->provider->_getFormClassName($tableDefinition->getPhpName());
     $this->addVariable('tableFormClassName', $tableFormClassName);
     $controllerName = $this->getVariable('controllerNamePrefix') . $this->getVariable('baseName') . 'Controller';
     $this->addVariable('controllerName', $controllerName);
     $formInclude = 'modules/' . $this->getVariable('moduleName') . '/forms/Edit' . $tableDefinition->getPhpName() . '.php';
     $this->addVariable('formInclude', $formInclude);
     //{$this->_controllerNamePrefix}
     //{$baseName}
     //$this->addVariable('VAR_searchableFields', $searchableFields);
     //$this->addVariable('VAR_headers', $headers);
     //$this->addVariable('VAR_fields', $rowFields);
     return parent::render();
 }
コード例 #2
0
ファイル: Form.php プロジェクト: dafik/zf-scaffold
 public function render()
 {
     /** @var $tableDefinition TableMap */
     $tableDefinition = $this->getObject('tableDefinition');
     //$tableName = $tableDefinition->getName();
     $tablePhpName = $tableDefinition->getPhpName();
     $this->addVariable('tablePhpName', $tablePhpName);
     $tableQueryClass = $tableDefinition->getPhpName() . 'Query';
     $this->addVariable('tableQueryClass', $tableQueryClass);
     $tablePeerClass = $tableDefinition->getPhpName() . 'Peer';
     $this->addVariable('tablePeerClass', $tablePeerClass);
     $tableFormClassName = $this->provider->_getFormClassName($tableDefinition->getPhpName());
     $this->addVariable('tableFormClassName', $tableFormClassName);
     $fields = array();
     $fieldNames = array();
     /** @var $field ColumnMap */
     foreach ($tableDefinition->getColumns() as $field) {
         $fieldNames[] = $field->getName();
         $addedCode = null;
         $fieldType = null;
         $referenceTableClass = null;
         $fieldConfigs = array();
         $validators = array();
         $filters = array();
         if ($field->isForeignKey()) {
             $referenceTable = $field->getRelatedTable();
             $fieldType = 'select';
             $baseClass = $referenceTable->getPhpName();
             $referenceTableClass = $baseClass;
         }
         if ($field->isPrimaryKey()) {
             $fieldType = 'hidden';
             $fieldsConfigs[] = '->setAttrib("class", "hidden-input")';
         } elseif ($referenceTableClass) {
             $fieldConfigs[] = "->setLabel('" . $field->getPhpName() . "')";
             $fieldConfigs[] = '->setMultiOptions(array("" => "- - Select - -") + Dfi_Propel_Adapter_Options::get(\'' . $baseClass . '\'))';
             if ($field->isNotNull()) {
                 $fieldConfigs[] = '->setRequired(true)';
             }
             $fieldsConfigs[] = '->setAttrib("class", "element-input")';
         } else {
             $fieldConfigs[] = "->setLabel('" . $field->getPhpName() . "')";
             // base on the type and type arguments, add corresponding validators and filters
             switch (strtolower($field->getType())) {
                 case 'set':
                 case 'enum':
                     /**
                      * For example, ENUM('Male', 'Female') would be converted to
                      *
                      * ->setMultiOptions(array("Male" => "Male", "Female" => "Female"))
                      */
                     $numericOptions = eval("return array({$field['type_arguments']});");
                     $assocOptions = array();
                     foreach ($numericOptions as $option) {
                         $option = str_replace("'", "\\'", $option);
                         $assocOptions[] = "'{$option}' => '{$option}'";
                     }
                     $array = 'array(' . implode(',', $assocOptions) . ')';
                     $fieldType = 'radio';
                     $fieldConfigs[] = '->setMultiOptions(' . $array . ')';
                     $validators[] = "new Zend_Validate_InArray(array('haystack' => {$array}))";
                     $fieldConfigs[] = '->setSeparator(" ")';
                     break;
                 case 'tinytext':
                 case 'mediumtext':
                 case 'text':
                 case 'longtext':
                     $fieldType = 'textarea';
                     $filters[] = 'new Zend_Filter_StringTrim()';
                     break;
                 case 'tinyint':
                 case 'mediumint':
                 case 'int':
                 case 'integer':
                 case 'year':
                     $fieldType = 'text';
                     $filters[] = 'new Zend_Filter_StringTrim()';
                     $validators[] = 'new Zend_Validate_Int()';
                     break;
                 case 'decimal':
                 case 'float':
                 case 'double':
                 case 'bigint':
                     $fieldType = 'text';
                     $filters[] = 'new Zend_Filter_StringTrim()';
                     $validators[] = 'new Zend_Validate_Float()';
                     break;
                 case 'varchar':
                 case 'char':
                     $validators[] = 'new Zend_Validate_StringLength(array("max" => ' . $field->getSize() . '))';
                     $fieldType = 'password' == $field->getType() ? 'password' : 'text';
                     $filters[] = 'new Zend_Filter_StringTrim()';
                     $fieldConfigs[] = '->setAttrib("maxlength", ' . $field->getSize() . ')';
                     if ('email' === strtolower($field->getName()) || 'emailaddress' === strtolower($field->getName())) {
                         $validators[] = 'new Zend_Validate_EmailAddress()';
                     }
                     break;
                 case 'bit':
                 case 'date':
                 case 'datetime':
                 case 'time':
                 case 'timestamp':
                 default:
                     $fieldType = 'text';
                     $filters[] = 'new Zend_Filter_StringTrim()';
                     if ('datetime' == $field->getType() || 'timestamp' == $field->getType()) {
                         $fieldConfigs[] = '->setValue(date("Y-m-d H:i:s"))';
                     } elseif ('date' == $field->getType()) {
                         $fieldConfigs[] = '->setValue(date("Y-m-d"))';
                     } elseif ('time' == $field->getType()) {
                         $fieldConfigs[] = '->setValue(date("H:i:s"))';
                     }
                     break;
             }
             if ($field->isNotNull()) {
                 $fieldConfigs[] = '->setRequired(true)';
             }
             $fieldsConfigs[] = '->setAttrib("class", "element-input")';
         }
         if ($field->getDefaultValue()) {
             $fieldConfigs[] = '->setValue("' . str_replace('"', '\\"', $field->getDefaultValue()) . '")';
         }
         foreach ($validators as $validator) {
             $fieldConfigs[] = '->addValidator(' . $validator . ')';
         }
         foreach ($filters as $filter) {
             $fieldConfigs[] = '->addFilter(' . $filter . ')';
         }
         $fieldConfigs = $this->formatLineArray($fieldConfigs);
         $fieldCode = array('$this->addElement(', '$this->createElement(\'' . $fieldType . '\', \'' . $field->getName() . '\')', $fieldConfigs, ');');
         if ($addedCode) {
             $fieldCode = array_unshift($fieldCode, $addedCode);
         }
         $fields[] = $this->formatLineArray($fieldCode);
     }
     $buttonDecorators = '';
     $fields[] = $this->formatLineArray(array('$this->addElement(', '$this->createElement(\'button\', \'submit\')', '->setLabel(\'Save\')', '->setAttrib(\'type\', \'submit\')' . $buttonDecorators, ');'));
     $fields[] = $this->formatLineArray(array('$this->addElement(', '$this->createElement(\'button\', \'cancel\')', '->setLabel(\'Cancel\')', '->setAttrib(\'type\', \'submit\')' . $buttonDecorators, ');'));
     $fields = implode("\n\n", $fields);
     $fieldNames[] = 'submit';
     $fieldNames[] = 'cancel';
     $this->addVariable('fields', $fields);
     $this->addVariable('fieldNames', preg_replace('/\\n/', '', var_export($fieldNames, true)));
     parent::render();
 }
コード例 #3
0
ファイル: Index.php プロジェクト: dafik/zf-scaffold
 public function render()
 {
     /** @var $tableDefinition TableMap */
     $tableDefinition = $this->getObject('tableDefinition');
     $searchableFields = array('all' => 'All');
     $rowFields = array('<td align="center"><input class="checkbox" type="checkbox" name="del_id[]" value="<?= $model->get' . $tableDefinition->getPrimaryKeys()[0]->getPhpName() . '(); ?>" /></td>');
     $headers = array('<th><input class="checkbox" type="checkbox" onchange="toggleCheckboxes(this);" /></th>');
     /** @var $field ColumnMap */
     foreach ($tableDefinition->getColumns() as $field) {
         $columnFilters = '';
         $renderedFieldData = array('echo $model->get' . $field->getPhpName() . '();');
         if (('CHAR' === substr($field->getType(), -4) || 'TEXT' === substr($field->getType(), -4)) && 'PASSWORD' !== $field->getName()) {
             $searchableFields[$field->getName()] = $field->getPhpName();
         }
         if ('ENUM' == $field->getType() || 'SET' == $field->getType()) {
             $optionsCode = array('' => '- - Change - -');
             $options = preg_split('#\\s*,\\s*#', $field->getSize());
             foreach ($options as $option) {
                 $option = trim($option, "'");
                 $optionsCode[$option] = $option;
             }
             $optionsCode = preg_replace('/\\n/', ' ', var_export($optionsCode, true));
             $columnFilters = '<?= $this->formSelect(\'' . $field->getName() . '\', $this->param' . $field->getName() . ', array(\'onchange\' => \'updateFilters(\'' . $field->getName() . '\', this.options[this.selectedIndex].value)\'), ' . $optionsCode . '); ?>';
         } elseif (isset($tableDefinition->getForeignKeys()[$field->getName()])) {
             /** @var $referenceData RelationMap */
             $referenceData = $tableDefinition->relationsFK[$field->getName()];
             $refTableName = $referenceData->getForeignTable()->getName();
             /** @var $refTableDefinition TableMap */
             $refTableDefinition = $this->getObject('tables')[$refTableName];
             $columnFilters = '<?= $this->formSelect(\'' . $field->getName() . '\', $this->param' . $field->getName() . ', array(\'class\'=>\'form-control\',\'onchange\' => \'updateFilters(\\\'' . $field->getName() . '\\\', this.options[this.selectedIndex].value)\'), array(\'\' => \'- - Change - -\') + Dfi_Propel_Adapter_Options::get(\'' . $refTableDefinition->getPhpName() . '\'));?>';
             if ($referenceData->getType() == RelationMap::MANY_TO_ONE) {
                 $renderedFieldData = array('$linkedRow = $model->get' . $referenceData->getName() . '();');
             } elseif ($referenceData->getType() == RelationMap::ONE_TO_MANY) {
                 $renderedFieldData = array('$linkedRow = $model->get' . $refTableDefinition->getPhpName() . 'RelatedBy' . $referenceData->getLocalColumns()[0]->getPhpname() . '();');
             } else {
                 throw new Exception('relation not nknown');
             }
             $renderedFieldData[] = 'if ($linkedRow) {';
             $renderedFieldData[] = 'echo $linkedRow->get' . $refTableDefinition->autoLabel->getPhpName() . '();';
             $renderedFieldData[] = '} else {';
             $renderedFieldData[] = 'echo $model->get' . $field->getPhpName() . '(). ($model->get' . $field->getPhpName() . '() ? \' (unlinked)\' : \'\');';
             $renderedFieldData[] = '}';
         }
         $tmp = array('<th<?= (\'' . $field->getName() . '\' == $this->sortField ? \' class="sort-field sort-\'.htmlspecialchars($this->param_so). \'"\':\'\'); ?>>');
         $tmp[] = '<a href="<?= $this->url($_GET + array(\'_sf\' => \'' . $field->getName() . '\', \'_so\' => \'asc\')); ?>"><i class=\'glyphicon glyphicon-arrow-up\'></i></a>';
         $tmp[] = $field->getPhpName();
         $tmp[] = '<a href="<?= $this->url($_GET + array(\'_sf\' => \'' . $field->getName() . '\', \'_so\' => \'desc\')); ?>"><i class=\'glyphicon glyphicon-arrow-down\'></i></a>';
         $tmp[] = $columnFilters;
         $tmp[] = '</th>';
         $headers[] = $this->formatLineArray($tmp);
         $align = ('INTEGER' == $field->getType() || 'FLOAT' == $field->getType()) && !isset($tableDefinition->getForeignKeys()[$field->getName()]) ? ' align="right"' : '';
         if ('TEXT' == $field->getType() || 'MEDIUMTEXT' == $field->getType() || 'LONGTEXT' == $field->getType() || 'TINYTEXT' == $field->getType()) {
             $rowFields[] = '<td' . $align . '><?= mb_substr($model->get' . $field->getPhpName() . '(), 0, 100), \'...\'; ?></td>';
         } else {
             $rowFields[] = '<td' . $align . '><? ' . $this->formatLineArray($renderedFieldData) . ' ?></td>';
         }
     }
     $headers[] = '<th>Actions</th>';
     $tmp = array('<td align="center"><a class="btn btn-info btn-xs" href="<?= $this->url(array_merge(' . $this->getVariable('routeParams') . ', array(\'action\' => \'update\', \'id\' => $model->get' . $tableDefinition->getPrimaryKeys()[0]->getPhpName() . '())), null, true); ?>"><i class="glyphicon glyphicon-pencil"></i> Edit</a>');
     $tmp[] = '<a class="btn btn-danger btn-xs" onclick="return confirm(\'Confirm deletion!\');" href="<?= $this->url(array_merge(' . $this->getVariable('routeParams') . ', array(\'action\' => \'delete\', \'del_id\' =>$model->get' . $tableDefinition->getPrimaryKeys()[0]->getPhpName() . '())), null, true); ?>"><i class="glyphicon glyphicon-trash"></i> Delete</a></td>';
     $rowFields[] = $this->formatLineArray($tmp, 4);
     array_unshift($headers, '<tr>');
     array_push($headers, '</tr>');
     $headers = $this->formatLineArray($headers, 3);
     array_unshift($rowFields, '<tr>');
     array_push($rowFields, '</tr>');
     $rowFields = $this->formatLineArray($rowFields, 3);
     $searchableFields = preg_replace('/\\n/', ' ', var_export($searchableFields, true));
     $this->addVariable('searchableFields', $searchableFields);
     $this->addVariable('headers', $headers);
     $this->addVariable('fields', $rowFields);
     $tablePhpName = $tableDefinition->getPhpName();
     $this->addVariable('tablePhpName', $tablePhpName);
     return parent::render();
 }
コード例 #4
0
ファイル: Index.php プロジェクト: dafik/zf-scaffold
 public function render()
 {
     $this->addVariable('controllerNamePrefixIndexController', $this->getVariable('controllerNamePrefix') . 'IndexController');
     return parent::render();
 }
コード例 #5
0
ファイル: Base.php プロジェクト: dafik/zf-scaffold
 public function render()
 {
     $this->addVariable('className', 'application_BaseController');
     return parent::render();
 }