Esempio n. 1
0
 public function actionRule($id)
 {
     $cm = Cm::findOne($id);
     $table_name = Cm::getTable($cm->tab_index, $cm->tab);
     $table = Yii::$app->db->getTableSchema($table_name);
     $types = [];
     $lengths = [];
     foreach ($table->columns as $column) {
         if ($column->autoIncrement) {
             continue;
         }
         if (!$column->allowNull && $column->defaultValue === null) {
             $types['required'][] = $column->name;
         }
         switch ($column->type) {
             case Schema::TYPE_SMALLINT:
             case Schema::TYPE_INTEGER:
             case Schema::TYPE_BIGINT:
                 $types['integer'][] = $column->name;
                 break;
             case Schema::TYPE_BOOLEAN:
                 $types['boolean'][] = $column->name;
                 break;
             case Schema::TYPE_FLOAT:
             case 'double':
                 // Schema::TYPE_DOUBLE, which is available since Yii 2.0.3
             // Schema::TYPE_DOUBLE, which is available since Yii 2.0.3
             case Schema::TYPE_DECIMAL:
             case Schema::TYPE_MONEY:
                 $types['number'][] = $column->name;
                 break;
             case Schema::TYPE_DATE:
             case Schema::TYPE_TIME:
             case Schema::TYPE_DATETIME:
             case Schema::TYPE_TIMESTAMP:
                 $types['safe'][] = $column->name;
                 break;
             default:
                 // strings
                 if ($column->size > 0) {
                     $lengths[$column->size][] = $column->name;
                 } else {
                     $types['string'][] = $column->name;
                 }
         }
     }
     $rules = [];
     foreach ($types as $type => $columns) {
         $rules[] = "[['" . implode("', '", $columns) . "'], '{$type}']";
     }
     foreach ($lengths as $length => $columns) {
         $rules[] = "[['" . implode("', '", $columns) . "'], 'string', 'max' => {$length}]";
     }
     $response = Yii::$app->response;
     $response->format = $response::FORMAT_RAW;
     return implode(",\n", $rules);
 }
Esempio n. 2
0
 /**
  * @param $id
  */
 public static function setCm($id)
 {
     $cm = Cm::findOne($id);
     $table = Cm::getTable($cm->tab_index, $cm->tab);
     self::$_tableName = $table;
     self::$_rules = self::getRulesFromString($cm->rules, $table);
     self::$_select_field = $cm->select_field;
     self::$_title_field = $cm->title_field;
     self::$_adv_field = $cm->adv_field;
     $fields = CmField::find()->where(['cm_id' => $id])->orderBy(['sort' => SORT_ASC, 'id' => SORT_ASC])->asArray()->all();
     self::$_fields = self::getOptions($fields);
     return new static();
 }