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
Kommentare
Hallo Markus, danke für das Tutorial. Kannst du das auch mal auf github stellen, das hilft mir immer alles im Gesamten nachzuvollziehen. Danke.
Hallo Stefan, ich schau mal ob ich in der nächsten Zeit dazu komme.
Weitere Beiträge
Schneller, besser, effizienter - mit diesen Tools wirst du zum Coding-Champion!
Eine eigene TYPO3 Extension (Extbase/Fluid) mit System Kategorien und Datensatzsammlung (Teil 3)
PHP 7 | Checkboxen in Datenbank speichern (implode/explode)
TYPO3 tx_news Extension Related News in Detailansicht mit Image anzeigen