[896 Aufrufe]

4.6 Edit und Select Callbacks

Es gibt zwei Callbacks, um die Buttons für die Bearbeitung anzupassen, einen für das Beratbeiten der Buttons im Fuß der Bearbeitungsmaske eines Datensatzes (edit.buttons) und einen zum Bearbeiten der Buttons im Fuß beim "Mehrere Bearbeiten" (select.buttons).

In diesen Beispielen werden die Callbacks immer in der Datei /src/Ctocb/Example/Resources/config/services.yml registriert und die Klasse für die Verarbeitung ist hier immer /src/Ctocb/Example/Classes/Contao/Callbacks/TlTest.php. Wer nicht weiß was hier gemeint ist, sollte sich den Text " "Grundlagen der Callbacks"" noch einmal ansehen.

Bitte auch in diesem Artikel wieder den Vendor-Namespace (und/oder entsprechenden Ordner) durch Euren eignen ersetzen und nicht Ctocb verwenden! Danke!

Callback: edit.buttons

Mit dem edit.buttons-Callback kann man die Buttons zum Speichern, Schließen usw. im Fuß der Bearbeitungsmaske bearbeiten.

services:
  Ctocb\Example\Classes\Contao\Callbacks\TlTest:
    public: true
    tags:
      - { name: contao.callback, target: edit.buttons, table: tl_test, method: myCallback, priority: 1024 }
<?php declare(strict_types=1);

namespace Ctocb\Example\Classes\Contao\Callbacks;

use Contao\DataContainer;

class TlTest
{
    public function myCallback(array $buttons, DataContainer $dc): void
    {
        // Remove the "Save and close" button
        unset($buttons['save']);

        return $buttons;
    }
}

Der erste Parameter enthält ein Array mit dem Markup der Standardbuttons, dies kann bearbeitet und erweitert werden. Das angepasste Array wird als Rückgabewert erwartet. $dc ist wie immer das Data Conatiner Objekt. In diesem Beispiel aus dem Handbuch wird der Button für das Speichern entfernt.

Callback: select.buttons

Mit dem select.buttons-Callback kann man die Buttons zum Speichern, Löschen usw. im Fuß beim "Mehrere Bearbeiten" bearbeiten.

services:
    Ctocb\Example\Classes\Contao\Callbacks\TlTest:
        public: true
        tags:
            - { name: contao.callback, target: select.buttons, table: tl_test, method: myCallback, priority: 1024 }
<?php declare(strict_types=1);

namespace Ctocb\Example\Classes\Contao\Callbacks;

use Contao\DataContainer;

class TlTest
{
    public function myCallback(array $buttons, DataContainer $dc): void
    {
        // Remove the "delete" button
        unset($buttons['delete']);

        return $buttons;
    }
}

Der erste Parameter enthält ein Array mit dem Markup der Standardbuttons, dies kann bearbeitet und erweitert werden. Das angepasste Array wird als Rückgabewert erwartet. $dc ist wie immer das Data Conatiner Objekt. In diesem Beispiel aus dem Handbuch wird der Button für das Löschen entfernt.