refactor the validation replacement code.

This commit is contained in:
Taylor Otwell 2012-02-03 11:13:44 -06:00
parent 554d390f1e
commit ad24b08b29
1 changed files with 114 additions and 18 deletions

View File

@ -714,30 +714,126 @@ protected function replace($message, $attribute, $rule, $parameters)
{ {
$message = str_replace(':attribute', $this->attribute($attribute), $message); $message = str_replace(':attribute', $this->attribute($attribute), $message);
if (in_array($rule, $this->size_rules)) if (method_exists($this, $replacer = 'replace_'.$rule))
{ {
// Even though every size rule will not have a place-holder for min, max, $message = $this->$replacer($message, $attribute, $rule, $parameters);
// and size, we will go ahead and make replacements for all of them just
// for convenience. Except for "between", every replacement should be
// the first parameter in the array.
$max = ($rule == 'between') ? $parameters[1] : $parameters[0];
$replace = array($parameters[0], $parameters[0], $max);
$message = str_replace(array(':size', ':min', ':max'), $replace, $message);
}
// The :values place-holder is used for rules that accept a list of
// values, such as "in" and "not_in". The place-holder value will
// be replaced with a comma delimited list of the values.
elseif (in_array($rule, $this->inclusion_rules))
{
$message = str_replace(':values', implode(', ', $parameters), $message);
} }
return $message; return $message;
} }
/**
* Replace all place-holders for the between rule.
*
* @param string $message
* @param string $attribute
* @param string $rule
* @param array $parameters
* @return string
*/
protected function replace_between($message, $attribute, $rule, $parameters)
{
return str_replace(array(':min', ':max'), $parameters, $message);
}
/**
* Replace all place-holders for the size rule.
*
* @param string $message
* @param string $attribute
* @param string $rule
* @param array $parameters
* @return string
*/
protected function replace_size($message, $attribute, $rule, $parameters)
{
return str_replace(':size', $parameters[0], $message);
}
/**
* Replace all place-holders for the min rule.
*
* @param string $message
* @param string $attribute
* @param string $rule
* @param array $parameters
* @return string
*/
protected function replace_min($message, $attribute, $rule, $parameters)
{
return str_replace(':min', $parameters[0], $message);
}
/**
* Replace all place-holders for the max rule.
*
* @param string $message
* @param string $attribute
* @param string $rule
* @param array $parameters
* @return string
*/
protected function replace_max($message, $attribute, $rule, $parameters)
{
return str_replace(':max', $parameters[0], $message);
}
/**
* Replace all place-holders for the in rule.
*
* @param string $message
* @param string $attribute
* @param string $rule
* @param array $parameters
* @return string
*/
protected function replace_in($message, $attribute, $rule, $parameters)
{
return str_replace(':values', implode(', ', $parameters), $message);
}
/**
* Replace all place-holders for the not_in rule.
*
* @param string $message
* @param string $attribute
* @param string $rule
* @param array $parameters
* @return string
*/
protected function replace_not_in($message, $attribute, $rule, $parameters)
{
return str_replace(':values', implode(', ', $parameters), $message);
}
/**
* Replace all place-holders for the same rule.
*
* @param string $message
* @param string $attribute
* @param string $rule
* @param array $parameters
* @return string
*/
protected function replace_same($message, $attribute, $rule, $parameters)
{
return str_replace(':other', $parameters[0], $message);
}
/**
* Replace all place-holders for the different rule.
*
* @param string $message
* @param string $attribute
* @param string $rule
* @param array $parameters
* @return string
*/
protected function replace_different($message, $attribute, $rule, $parameters)
{
return str_replace(':other', $parameters[0], $message);
}
/** /**
* Get the displayable name for a given attribute. * Get the displayable name for a given attribute.
* *