mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Merge branch '5.1' into 5
This commit is contained in:
commit
e588005a4b
@ -152,7 +152,6 @@ class TextareaField extends FormField
|
|||||||
return $attributes;
|
return $attributes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
@ -167,6 +166,41 @@ class TextareaField extends FormField
|
|||||||
return $parent;
|
return $parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validate this field
|
||||||
|
*
|
||||||
|
* @param Validator $validator
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function validate($validator)
|
||||||
|
{
|
||||||
|
if (!is_null($this->maxLength) && mb_strlen($this->value ?? '') > $this->maxLength) {
|
||||||
|
$name = strip_tags($this->Title() ? $this->Title() : $this->getName());
|
||||||
|
$validator->validationError(
|
||||||
|
$this->name,
|
||||||
|
_t(
|
||||||
|
'SilverStripe\\Forms\\TextField.VALIDATEMAXLENGTH',
|
||||||
|
'The value for {name} must not exceed {maxLength} characters in length',
|
||||||
|
['name' => $name, 'maxLength' => $this->maxLength]
|
||||||
|
),
|
||||||
|
"validation"
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSchemaValidation()
|
||||||
|
{
|
||||||
|
$rules = parent::getSchemaValidation();
|
||||||
|
if ($this->getMaxLength()) {
|
||||||
|
$rules['max'] = [
|
||||||
|
'length' => $this->getMaxLength(),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
return $rules;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return value with all values encoded in html entities
|
* Return value with all values encoded in html entities
|
||||||
*
|
*
|
||||||
|
@ -4,6 +4,7 @@ namespace SilverStripe\Forms\Tests;
|
|||||||
|
|
||||||
use SilverStripe\Dev\SapphireTest;
|
use SilverStripe\Dev\SapphireTest;
|
||||||
use SilverStripe\Forms\TextareaField;
|
use SilverStripe\Forms\TextareaField;
|
||||||
|
use SilverStripe\Forms\RequiredFields;
|
||||||
|
|
||||||
class TextareaFieldTest extends SapphireTest
|
class TextareaFieldTest extends SapphireTest
|
||||||
{
|
{
|
||||||
@ -50,6 +51,30 @@ class TextareaFieldTest extends SapphireTest
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests the TextareaField Max Length Validation Failure
|
||||||
|
*/
|
||||||
|
public function testMaxLengthValidationFail()
|
||||||
|
{
|
||||||
|
$field = new TextareaField("Test", "Test");
|
||||||
|
$field->setMaxLength(5);
|
||||||
|
$field->setValue("John Doe"); // 8 characters, so should fail
|
||||||
|
$result = $field->validate(new RequiredFields());
|
||||||
|
$this->assertFalse($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests the TextareaField Max Length Validation Success
|
||||||
|
*/
|
||||||
|
public function testMaxLengthValidationSuccess()
|
||||||
|
{
|
||||||
|
$field = new TextareaField("Test", "Test");
|
||||||
|
$field->setMaxLength(5);
|
||||||
|
$field->setValue("John"); // 4 characters, so should pass
|
||||||
|
$result = $field->validate(new RequiredFields());
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
|
||||||
public function testValueEntities()
|
public function testValueEntities()
|
||||||
{
|
{
|
||||||
$inputText = "These <b>are</b> some unicodes: äöü";
|
$inputText = "These <b>are</b> some unicodes: äöü";
|
||||||
|
Loading…
Reference in New Issue
Block a user