ModifyRecordListTableActionsEvent
New in version 11.4
Changed in version 12.0
Due to the integration of EXT:recordlist into EXT:backend the namespace of
the event changed from
\TYPO3\
to
\TYPO3\
.
For TYPO3 v12 the moved class is available as an alias under the old
namespace to allow extensions to be compatible with TYPO3 v11 and v12.
The PSR-14 event
\TYPO3\
allows to modify the multi record selection actions (for example
edit, copy to clipboard) for a table in the record list.
Example
<?php
declare(strict_types=1);
namespace MyVendor\MyExtension\Backend\EventListener;
use Psr\Log\LoggerInterface;
use TYPO3\CMS\Backend\RecordList\Event\ModifyRecordListHeaderColumnsEvent;
use TYPO3\CMS\Backend\RecordList\Event\ModifyRecordListRecordActionsEvent;
use TYPO3\CMS\Backend\RecordList\Event\ModifyRecordListTableActionsEvent;
use TYPO3\CMS\Core\Attribute\AsEventListener;
#[AsEventListener(
identifier: 'my-extension/recordlist/my-event-listener',
method: 'modifyRecordActions',
)]
#[AsEventListener(
identifier: 'my-extension/recordlist/my-event-listener',
method: 'modifyHeaderColumns',
)]
#[AsEventListener(
identifier: 'my-extension/recordlist/my-event-listener',
method: 'modifyTableActions',
)]
final readonly class MyEventListener
{
public function __construct(
private LoggerInterface $logger,
) {}
public function modifyRecordActions(ModifyRecordListRecordActionsEvent $event): void
{
$currentTable = $event->getTable();
// Add a custom action for a custom table in the secondary action bar, before the "move" action
if ($currentTable === 'my_custom_table' && !$event->hasAction('myAction')) {
$event->setAction(
'<button>My Action</button>',
'myAction',
'secondary',
'move',
);
}
// Remove the "viewBig" action in case more than 4 actions exist in the group
if (count($event->getActionGroup('secondary')) > 4 && $event->hasAction('viewBig')) {
$event->removeAction('viewBig');
}
// Move the "delete" action after the "edit" action
$event->setAction('', 'delete', 'primary', '', 'edit');
}
public function modifyHeaderColumns(ModifyRecordListHeaderColumnsEvent $event): void
{
// Change label of "control" column
$event->setColumn('Custom Controls', '_CONTROL_');
// Add a custom class for the table header row
$event->setHeaderAttributes(['class' => 'my-custom-class']);
}
public function modifyTableActions(ModifyRecordListTableActionsEvent $event): void
{
// Remove "edit" action and log, if this failed
$actionRemoved = $event->removeAction('unknown');
if (!$actionRemoved) {
$this->logger->warning('Action "unknown" could not be removed');
}
// Add a custom clipboard action after "copyMarked"
$event->setAction('<button>My action</button>', 'myAction', '', 'copyMarked');
// Set a custom label for the case, no actions are available for the user
$event->setNoActionLabel('No actions available due to missing permissions.');
}
}
New in version 13.0
The PHP attribute \TYPO3\
has been
introduced to tag a PHP class as an event listener. Alternatively, or if you
need to be compatible with older TYPO3 versions, you can also register an
event listener via the Configuration/
file. Switch to
an older version of this page for an example or have a look at the section
Implementing an event listener in your extension.
API
- class ModifyRecordListTableActionsEvent
-
- Fully qualified name
-
\TYPO3\
CMS\ Backend\ Record List\ Event\ Modify Record List Table Actions Event
An event to modify the multi record selection actions (e.g.
"edit", "copy to clipboard") for a table in the RecordList.
- setAction ( string $action, string $actionName = '', string $before = '', string $after = '')
-
Add a new action or override an existing one. Latter is only possible, in case $actionName is given. Otherwise, the action will be added with a numeric index, which is generally not recommended. It's also possible to define the position of an action with either the "before" or "after" argument, while their value must be an existing action.
- param $action
-
the action
- param $actionName
-
the actionName, default: ''
- param $before
-
the before, default: ''
- param $after
-
the after, default: ''
- hasAction ( string $actionName)
-
Whether the action exists
- param $actionName
-
the actionName
- Returns
-
bool
- getAction ( string $actionName)
-
Get action by its name
- param $actionName
-
the actionName
- Return description
-
The action or NULL if the action does not exist
- Returns
-
string
|null
- removeAction ( string $actionName)
-
Remove action by its name
- param $actionName
-
the actionName
- Return description
-
Whether the action could be removed - Will thereforereturn FALSE if the action to remove does not exist.
- Returns
-
bool