Write your own
Each Plugin is nothing more than a
class
that implements our Plugin interface
and can perform customizations at either Agent level, Collection level, or both.<?php
namespace ...;
use ForestAdmin\AgentPHP\DatasourceCustomizer\CollectionCustomizer;
use ForestAdmin\AgentPHP\DatasourceCustomizer\DatasourceCustomizer;
class RemoveTimestamps implements Plugin
{
public function run(DatasourceCustomizer $datasourceCustomizer, ?CollectionCustomizer $collectionCustomizer = null, $options = []): void
{
// ... call customization methods here
}
}
3 parameters are provided:
Name | Description |
---|---|
dataSource | An object that allows customizing the whole agent. It has the same interface than the Agent you manipulate outside of Plugins |
collection | An object that allows customizing the collection that the Plugin was called from ( null if the Plugin was called on the Agent). It is the same object than is passed when you call customizeCollection |
options | An array of options that are provided to the Plugin. Each Plugin will provide specific mandatory or optional options. |
When making a Plugin, you may want it to generalize to many different Collections.
This can be achieved by adopting different behavior depending on the
schema
of the Collection being targeted.<?php
namespace ...;
use ForestAdmin\AgentPHP\DatasourceCustomizer\CollectionCustomizer;
use ForestAdmin\AgentPHP\DatasourceCustomizer\DatasourceCustomizer;
class RemoveTimestamps implements Plugin
{
public function run(DatasourceCustomizer $datasourceCustomizer, ?CollectionCustomizer $collectionCustomizer = null, $options = []): void
{
foreach ($datasourceCustomizer->getCollection() as $currentCollection) {
if ($currentCollection->getFields()['createdAt']) {
$currentCollection->removeField('createdAt');
}
if ($currentCollection->getFields()['updatedAt']) {
$currentCollection->removeField('updatedAt');
}
}
}
}
Last modified 1mo ago