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

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.

Datenschutz
Programmier-Tipps - Programmieren lernen ist nicht schwer!

Wir verwenden Cookies, um unsere Webseite für Dich optimal zu gestalten, fortlaufend zu verbessern und die Zugriffe auf unsere Webseite zu analysieren. Cookie-Informationen werden in deinem Browser gespeichert und helfen uns zu verstehen, welche Abschnitte der Website für dich am interessantesten und nützlichsten sind. Genauere Informationen findest du in unserer Datenschutzerklärung.

Notwendige Cookies

Notwendige Cookies sollten jederzeit aktiviert sein, damit wir deine Einstellungen für die Cookie-Einstellungen speichern können. Details findest du in unserer Datenschutzerklärung.

Google AdSense

Diese Website benutzt Google AdSense, einen Dienst zum Einbinden von Werbeanzeigen der Google Inc. ("Google"). Google AdSense verwendet sogenannte „Cookies“, Textdateien, die auf Ihrem Computer gespeichert werden und die eine Analyse der Benutzung der Website ermöglichen. Genauere Informationen findest du in unserer Datenschutzerklärung.

Diesen Cookie aktiviert zu lassen, unterstützt uns ohne dass du Geld ausgeben musst.

Google Analytics

Diese Website nutzt den Webanalysedienst Google Analytics, der sogenannte Cookies einsetzt. Dies sind kleine Textdateien, die auf Ihrem Device gespeichert werden und eine Analyse der Website-Nutzung ermöglichen. Die erzeugten Informationen werden in der Regel an einen Server von Google in den USA übertragen und dort gespeichert. Weitere Informationen findest du in unserer Datenschutzerklärung.

Das aktivieren ermöglicht es uns unsere Webseite für dich noch attraktiver zu machen.