Skip to content

Instantly share code, notes, and snippets.

@joseph-montanez
Created January 2, 2017 18:43
Show Gist options
  • Save joseph-montanez/32c6293b0983e6c67713f9deb19ec61b to your computer and use it in GitHub Desktop.
Save joseph-montanez/32c6293b0983e6c67713f9deb19ec61b to your computer and use it in GitHub Desktop.
<?php
class Validator extends \Valitron\Validator {
public $default_require_message = 'Please enter the {field}';
public function mapRules($rules) {
//-- Map rules to \Valitron\Validator type of input
foreach ($rules as $field => $field_config) {
if (isset($field_config['rules']) && is_array($field_config)) {
$required = false;
$optional = false;
foreach ($field_config['rules'] as $rule) {
if ($rule[0] === 'required') {
$required = true;
}
if ($rule[0] === 'optional') {
$optional = true;
}
$field_rule = call_user_func_array(array($this, "rule"), array_merge(
array($rule[0], $field),
array_slice($rule, 1)
));
if (isset($field_config['messages']) && is_array($field_config['messages']) && isset($field_config['messages'][$rule[0]])) {
$field_rule->message($field_config['messages'][$rule[0]]);
}
}
if (!$required && !$optional) {
$this->rule('required', $field)->message($this->default_require_message);
}
} else {
$required_message = $this->default_require_message;
if (isset($field_config['messages']) && !empty($field_config['messages']['required'])) {
$required_message = $field_config['messages']['required'];
}
$this->rule('required', $field)->message($required_message);
}
if (isset($field_config['label'])) {
$this->labels(array($field => $field_config['label']));
}
}
}
public function firstErrors() {
$errors = $this->errors();
return array_map(function ($errors) {
return $errors[0];
}, $errors);
}
/**
* @return string
*/
public function getDefaultRequireMessage()
{
return $this->default_require_message;
}
/**
* @param string $default_require_message
*
* @return Validator
*/
public function setDefaultRequireMessage($default_require_message)
{
$this->default_require_message = $default_require_message;
return $this;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment