TYPO3 | Checkbox in Extbase Extension

Im heutigen Tutorial bauen wir eine Checkbox nachträglich in eine TYPO3 Extbase Extension ein. Wenn du noch nicht weiß wie eine komplette Extension erstellt wird, schau dir gerne unsere Anleitung hier an. Für was Du die Checkbox letztendlich in deiner TYPO3 Extension verwendest, bleibt Dir überlassen. Wir machen dass in unserem Beispiel um dem Inhaltselement eine zusätzliche CSS Klasse zu vergeben.

Willst Du einer offiziellen Extension so eine Checkbox verpassen, solltest Du trotzdem eine eigene Extension erstellen. Die Datenbankfelder müssen dann nur in die entsprechende Extension Tabelle in der Datenbank gemappt werden.

Datenbankfeld

Als erstes brauchen wir also ein Datenbankfeld. Dafür bearbeitest Du die ext_tables.sql und fügst folgende Zeile innerhalb der Klammern von „CREATE TABLE“ hinzu.

customcsscheckbox tinyint(1) unsigned DEFAULT '0' NOT NULL,

TCA erweitern

Das TCA erweitern wir wie folgt. Die Datei findest du im Pfad <EXTENSION – Configuration – TCA – deinedatei.php>

'customcsscheckbox' => [
  'exclude' => false,
  'label' => 'Label Checkbox',
  'config' => [
    'type' => 'check',
    'default' => 0
  ],
],

Zusätzlich müssen wir unser Feld noch dem interface und den types hinzufügen. Das sollte bei dir ähnlich wie im folgenden Code aussehen. Hier einfach den Namen unseres Datenbankfeldes hinzufügen.

'interface' => [
  'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, customcsscheckbox, title, description',
],
'types' => [
  '1' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, customcsscheckbox, title, description, --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime'],
],

Unser Feld im Model hinzufügen

Damit Du mit dem Wert aus der Checkbox arbeiten kannst brauchst Du noch folgenden Zeilen in dem Model. Pfad: <EXTENSION –  Classes – Domain – Model – deindatei.php>

/**
* customcsscheckbox
* 
* @var string
* @validate NotEmpty
*/
protected $customcsscheckbox = '';

/**
* Returns the customcsscheckbox
* 
* @return string customcsscheckbox
*/
public function getCustomcsscheckbox() {
  return $this->customcsscheckbox;
}

/**
* Sets the customcsscheckbox
* 
* @param string $customcsscheckbox
* @return void
*/
public function setCustomcsscheckbox($customcsscheckbox) {
  $this->customcsscheckbox = $customcsscheckbox;
}

Ausgabe im Template

An der Stelle wo Du jetzt die zusätzlich CSS Klasse verwenden möchtest, fügst Du folgenden Code ein. Pfad zum Template für die Listenansicht: <EXTENSION – Resources – Private – Templates – DeinOrdner – List.html>. Den <foreachwert> musst Du durch deinen austauschen. Wenn Du jetzt in einem Inhaltselement die Checkbox aktivierst, wird dem DIV Container die CSS-Klasse „top“ hinzugefügt.

<div class="col-sm {f:if(condition: '{<foreachwert>.customcsscheckbox} == 1', then: 'top')}></div>

Fragen, Verbesserungsvorschläge oder gar einen Fehler entdeckt? Ab in die Kommentare damit.
Viel Erfolg!

Getestet mit TYPO3 8.7.17

* Werbung/Affiliate Link
Anker

Kommentare

  • stefan
    06.03.2020 - 08:45 Uhr

    Hallo Markus, danke für das Tutorial. Kannst du das auch mal auf github stellen, das hilft mir immer alles im Gesamten nachzuvollziehen. Danke.

    Antworten
    • Markus
      14.03.2020 - 16:35 Uhr

      Hallo Stefan, ich schau mal ob ich in der nächsten Zeit dazu komme.

      Antworten

Schreibe einen Kommentar

Erforderliche Felder sind entsprechend markiert.

Wird nicht veröffentlicht.