added error type to validation rule.

This commit is contained in:
Taylor Otwell 2011-06-26 16:17:41 -05:00
parent 2289570c95
commit bd3d8f6347
3 changed files with 26 additions and 7 deletions

View File

@ -18,6 +18,14 @@ abstract class Rule {
*/
public $message;
/**
* The error type. This is used for rules that have more than
* one type of error such as Size_Of and Upload_Of.
*
* @var string
*/
protected $error;
/**
* Create a new validation Rule instance.
*

View File

@ -61,16 +61,19 @@ private function check_number($attribute, $attributes)
{
if ( ! is_null($this->length) and $attributes[$attribute] !== $this->length)
{
$this->error = 'number_wrong_size';
return false;
}
if ( ! is_null($this->maximum) and $attributes[$attribute] > $this->maximum)
{
$this->error = 'number_too_big';
return false;
}
if ( ! is_null($this->minimum and $attributes[$attribute] < $this->minimum))
{
$this->error = 'number_too_small';
return false;
}
@ -90,16 +93,19 @@ public function check_string($attribute, $attributes)
if ( ! is_null($this->length) and Str::length($value) !== $this->length)
{
$this->error = 'string_wrong_size';
return false;
}
if ( ! is_null($this->maximum) and Str::length($value) > $this->maximum)
{
$this->error = 'string_too_big';
return false;
}
if ( ! is_null($this->minimum) and Str::length($value) < $this->minimum)
{
$this->error = 'string_too_small';
return false;
}

View File

@ -7,11 +7,11 @@
class Upload_Of extends Rule {
/**
* The acceptable file extensions.
* The acceptable file types.
*
* @var array
*/
public $extensions;
public $types = array();
/**
* The maximum file size in bytes.
@ -38,25 +38,30 @@ public function check($attribute, $attributes)
if ( ! is_null($this->maximum) and $file['size'] > $this->maximum)
{
$this->error = 'file_too_big';
return false;
}
if ( ! is_null($this->extensions) and ! in_array(File::extension($file['name']), $this->extensions))
foreach ($this->types as $type)
{
return false;
if ( ! File::is($type, $file['tmp_name']))
{
$this->error = 'file_wrong_type';
return false;
}
}
return true;
}
/**
* Set the acceptable file extensions.
* Set the acceptable file types.
*
* @return Upload_Of
*/
public function has_extension()
public function is()
{
$this->extensions = func_get_args();
$this->types = func_get_args();
return $this;
}