NEW Extensions for elemental

This commit is contained in:
Steve Boyd 2024-03-06 16:15:41 +13:00
parent b4355b0c5b
commit 5bc4ed80c3
2 changed files with 66 additions and 0 deletions

View File

@ -0,0 +1,47 @@
<?php
namespace SilverStripe\FrameworkTest\Elemental\Extension;
use SilverStripe\Core\Extension;
use SilverStripe\Forms\FieldList;
use SilverStripe\ORM\ValidationResult;
use SilverStripe\Forms\CompositeValidator;
use SilverStripe\Forms\NumericField;
use SilverStripe\Forms\RequiredFields;
use SilverStripe\Forms\TextField;
/**
* @extends Extension<ElementContent>
*/
class ElementContentExtension extends Extension
{
private static $db = [
'MyField' => 'Varchar',
'MyInt' => 'Int',
];
public function validate(ValidationResult $result)
{
if ($this->owner->Title == 'x') {
$result->addFieldError('Title', 'Title cannot be x');
}
if ($this->owner->MyField == 'x') {
$result->addFieldError('MyField', 'MyField cannot be x');
}
if ($this->owner->Title == 'z' && $this->owner->MyField == 'z') {
$result->addError('This is a general error message');
}
}
public function updateCMSCompositeValidator(CompositeValidator $compositeValidator)
{
$compositeValidator->addValidator(new RequiredFields(['Title']));
}
public function updateCMSFields(FieldList $fields)
{
$fields->removeByName('HTML');
$fields->addFieldToTab('Root.Main', TextField::create('MyField', 'My Field'));
$fields->addFieldToTab('Root.Main', NumericField::create('MyInt', 'My Int'));
}
}

View File

@ -0,0 +1,19 @@
<?php
namespace SilverStripe\FrameworkTest\Elemental\Extension;
use SilverStripe\Forms\NumericField;
use SilverStripe\Core\Extension;
/**
* @extends Extension<NumericField>
*/
class NumericFieldExtension extends Extension
{
public function updateValidationResult($result, $validator)
{
if ($this->owner->Value() == 1) {
$validator->validationError($this->owner->getName(), 'This field cannot be 1');
}
}
}