/** * @param $paramArray * @param Column $column * * @return array */ public function prepareValidatorParams($paramArray, Column $column) { if (!is_array($paramArray)) { return $paramArray; } foreach ($paramArray as $k => $value) { switch ((string) $value) { case 'COLUMN_CHAR_LENGTH': $value = $column->getCharacterMaximumLength(); break; case 'COLUMN_ENUM_VALUES': $value = $column->getEnumValuesAsArray(); break; case 'MAX_VALUE': $value = $column->getMaxValue(); break; case 'MIN_VALUE': $value = $column->getMinValue(); break; } $paramArray[$k] = $value; } return $paramArray; }
public function getColumntConfig(Column $column) { $config = $this->getOption('config'); $configFields = isset($config['fields']) ? $config['fields'] : array(); $result = array(); foreach ($configFields as $configField) { if (isset($configField['match'])) { $isMatched = false; foreach ($configField['match'] as $match) { $isMatched = false; if (isset($match['type'])) { $matchTypes = is_array($match['type']) ? $match['type'] : array($match['type']); $isMatched = in_array($column->getColumnType(), $matchTypes); } if (isset($match['regexp'])) { $isMatched = $isMatched && preg_match($match['regexp'], $column->getFullName()); } $columnLength = $column->getCharacterMaximumLength() ? $column->getCharacterMaximumLength() : $column->getNumericPrecision(); if ($isMatched && isset($match['length'])) { foreach ($match['length'] as $operation => $lengthMatch) { $operation = preg_replace('#\\s+#', '', $operation); switch ($operation) { case '<': $isMatched = $columnLength < $lengthMatch; break; case '>': $isMatched = $columnLength > $lengthMatch; break; case '>=': $isMatched = $columnLength >= $lengthMatch; break; case '<=': $isMatched = $columnLength <= $lengthMatch; break; case '==': $isMatched = $columnLength == $lengthMatch; break; case '=': $isMatched = $columnLength == $lengthMatch; break; default: $isMatched = false; } } } if ($isMatched) { break; } } if ($isMatched) { $result = ArrayUtils::merge($result, $configField); } } } return $result; }