Skip to content

Commit

Permalink
NEW Extensions for elemental
Browse files Browse the repository at this point in the history
  • Loading branch information
emteknetnz committed Mar 6, 2024
1 parent b4355b0 commit 5bc4ed8
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 0 deletions.
47 changes: 47 additions & 0 deletions code/elemental/ElementContentExtension.php
Original file line number Diff line number Diff line change
@@ -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'));
}
}
19 changes: 19 additions & 0 deletions code/elemental/NumericFieldExtension.php
Original file line number Diff line number Diff line change
@@ -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');
}
}
}

0 comments on commit 5bc4ed8

Please sign in to comment.