public function validateAttribute($model, $attribute)
{
$value = $model->{$attribute};
$result = $this->validateValue($value);
if (!empty($result)) {
$this->addError($model, $attribute, $result[0], $result[1]);
} elseif ($this->defaultScheme !== null && strpos($value, '://') === false) {
$model->{$attribute} = $this->defaultScheme . '://' . $value;
}
}
public function testValidateAttributeAndError() { $obj = new FakedValidationModel(); $obj->attr_url = 'http://google.de'; $val = new UrlValidator(); $val->validateAttribute($obj, 'attr_url'); $this->assertFalse($obj->hasErrors('attr_url')); $this->assertSame('http://google.de', $obj->attr_url); $obj = new FakedValidationModel(); $val->defaultScheme = 'http'; $obj->attr_url = 'google.de'; $val->validateAttribute($obj, 'attr_url'); $this->assertFalse($obj->hasErrors('attr_url')); $this->assertTrue(stripos($obj->attr_url, 'http') !== false); $obj = new FakedValidationModel(); $obj->attr_url = 'gttp;/invalid string'; $val->validateAttribute($obj, 'attr_url'); $this->assertTrue($obj->hasErrors('attr_url')); }