schmunk42\giiant\generators\model\Generator::generateRules PHP Метод

generateRules() публичный Метод

Generates validation rules for the specified table and add enum value validation.
public generateRules ( yii\db\TableSchema $table ) : array
$table yii\db\TableSchema the table schema
Результат array the generated validation rules
    public function generateRules($table)
    {
        $columns = [];
        foreach ($table->columns as $index => $column) {
            $isBlameableCol = $column->name === $this->createdByColumn || $column->name === $this->updatedByColumn;
            $isTimestampCol = $column->name === $this->createdAtColumn || $column->name === $this->updatedAtColumn;
            $removeCol = $this->useBlameableBehavior && $isBlameableCol || $this->useTimestampBehavior && $isTimestampCol;
            if ($removeCol) {
                $columns[$index] = $column;
                unset($table->columns[$index]);
            }
        }
        $rules = [];
        //for enum fields create rules "in range" for all enum values
        $enum = $this->getEnum($table->columns);
        foreach ($enum as $field_name => $field_details) {
            $ea = array();
            foreach ($field_details['values'] as $field_enum_values) {
                $ea[] = 'self::' . $field_enum_values['const_name'];
            }
            $rules[] = "['" . $field_name . "', 'in', 'range' => [\n                    " . implode(",\n                    ", $ea) . ",\n                ]\n            ]";
        }
        // inject namespace for targetClass
        $parentRules = parent::generateRules($table);
        $ns = "\\{$this->ns}\\";
        $match = "'targetClass' => ";
        $replace = $match . $ns;
        foreach ($parentRules as $k => $parentRule) {
            $parentRules[$k] = str_replace($match, $replace, $parentRule);
        }
        $rules = array_merge($parentRules, $rules);
        $table->columns = array_merge($table->columns, $columns);
        return $rules;
    }