$result=newValidationResult();$result->addError('Field type not found','field_type','field_type_not_found');$result->addWarning('Widget may not be compatible');$result->isValid();// false
$result=newExecutionResult(TRUE);$result->addMessage('Field created successfully.');$result->addAffectedEntity(['type'=>'field_config','id'=>'node.article.field_body','label'=>'Body field',]);$result->setRollbackData(['field_id'=>'node.article.field_body']);
$preview=newPreviewResult();$preview->addOperation('create','field_config','node.article.field_body','Create Body field');$preview->addDetails(['Field Type'=>'text_long','Required'=>'Yes',]);
<?phpnamespaceDrupal\my_module\Plugin\EbOperation;useDrupal\Core\StringTranslation\TranslatableMarkup;useDrupal\eb\Attribute\EbOperation;useDrupal\eb\PluginBase\OperationBase;useDrupal\eb\Result\ExecutionResult;useDrupal\eb\Result\ValidationResult;#[EbOperation(id:'my_custom_operation',label:newTranslatableMarkup('My Custom Operation'),description:newTranslatableMarkup('Does something custom'),operationType:'create',)]classMyCustomOperationextendsOperationBase{publicfunctionvalidate():ValidationResult{$result=newValidationResult();$this->validateRequiredFields(['name'],$result);return$result;}publicfunctionexecute():ExecutionResult{$name=$this->getDataValue('name');// Do something with the name value.$result=newExecutionResult(TRUE);$result->addMessage("Created: $name");return$result;}}
<?phpnamespaceDrupal\my_module\Plugin\EbValidator;useDrupal\Core\StringTranslation\TranslatableMarkup;useDrupal\eb\Attribute\EbValidator;useDrupal\eb\PluginBase\ValidatorBase;useDrupal\eb\PluginInterfaces\OperationInterface;useDrupal\eb\Result\ValidationResult;#[EbValidator(id:'my_custom_validator',label:newTranslatableMarkup('My Custom Validator'),description:newTranslatableMarkup('Validates custom rules'),)]classMyCustomValidatorextendsValidatorBase{publicfunctionvalidate(OperationInterface$operation,array$context=[]):ValidationResult{$result=newValidationResult();// Add your validation logic$name=$operation->getDataValue('name');if(strlen($name)<3){$result->addError('Name must be at least 3 characters','name','name_too_short');}return$result;}}