Skip to content

Instantly share code, notes, and snippets.

@G4MR
Created May 9, 2014 17:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save G4MR/4027d7b17ccf64992b34 to your computer and use it in GitHub Desktop.
Save G4MR/4027d7b17ccf64992b34 to your computer and use it in GitHub Desktop.
Valitron Validator - Laravel like validation rules, also a better validateMin callback
class Validation extends \Valitron\Validator
{
/**
* Better validateMin check
* @param [string] $field [input name]
* @param [mixed] $value
* @param [array] $params
* @return [bool]
*/
public function validateMin($field, $value, $params)
{
if(is_string($value)) {
return strlen($value) >= $params[0];
}
return $value >= $params[0];
}
/**
* Laravel like validation string
* ex.: setRule('name', 'required|min:5')
* @param [string] $field [input field name]
* @param [string] $rules [input rule string]
*/
public function setRule($field, $rules)
{
$field = trim($field);
//handle rules
$rules = trim($rules);
$rules = @explode('|', $rules);
if(!is_array($rules) && empty($rules)) {
return;
}
foreach($rules as $rule) {
//handle individual rules
$rule = trim($rule);
if(empty($rule)) continue;
$rule_name = null;
$rule_params = [];
$rule_data = @explode(':', $rule);
if(!is_array($rule_data) && !empty($rule_data)) {
$rule_name = $rule_data;
}
if(is_array($rule_data) && count($rule_data) == 1) {
$rule_name = $rule_data[0];
}
if(is_array($rule_data) && count($rule_data) > 1) {
$params = trim($rule_data[1]);
$rule_name = $rule_data[0];
$params = @explode(',', $params);
foreach($params as $param) {
$param = trim($param);
if(!empty($param)) {
$param = preg_match('/^[0-9]+/', $param) ? (int) $param : $param;
$rule_params[] = $param;
}
}
}
$rules_array = array_merge([$rule_name, $field], $rule_params);
call_user_func_array([$this, 'rule'], $rules_array);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment