Skip to content

Latest commit

 

History

History
59 lines (43 loc) · 1.99 KB

File metadata and controls

59 lines (43 loc) · 1.99 KB
..  php:namespace::  TYPO3\CMS\Backend\Template\Components
..  php:class:: ModifyButtonBarEvent

    PSR-14 event that allows listeners to modify the buttons in the backend module
    document header button bar. This event is dispatched after all buttons have been
    added to the button bar, but before they are rendered.

    Use cases:
    - Add custom buttons to existing modules
    - Remove or hide buttons based on conditions
    - Modify button properties (labels, icons, etc.)
    - Reorder buttons

    Example event listener:

    ..  code-block:: php

        use TYPO3\CMS\Backend\Template\Components\ModifyButtonBarEvent;
        use TYPO3\CMS\Backend\Template\Components\ButtonBar;
        use TYPO3\CMS\Backend\Template\Components\ComponentFactory;
        use TYPO3\CMS\Core\Attribute\AsEventListener;

        final class MyButtonBarListener
        {
            public function __construct(
                protected readonly ComponentFactory $componentFactory,
            ) }

            #[AsEventListener]
            public function __invoke(ModifyButtonBarEvent $event): void
            {
                $buttons = $event->getButtons();
                $buttonBar = $event->getButtonBar();

                $myButton = $this->componentFactory->createLinkButton()
                    ->setHref('/my-action')
                    ->setTitle('My Action')
                    ->setIcon($iconFactory->getIcon('actions-heart'));

                $buttons[ButtonBar::BUTTON_POSITION_RIGHT][1][] = clone $myButton;

                $event->setButtons($buttons);
            }
        }

    ..  php:method:: getButtons()
        :returns: `\Buttons`

    ..  php:method:: setButtons(array $buttons)

        :param $buttons: the buttons

    ..  php:method:: getButtonBar()
        :returns: `\TYPO3\CMS\Backend\Template\Components\ButtonBar`

    ..  php:method:: getRequest()
        :returns: `\Psr\Http\Message\ServerRequestInterface`