Hidden Records im Extbase Backend Modul

Extbase war am Anfang primär als Tool für die Entwicklung von Frontend Extension gedacht. Was allerdings bei Frontendextensions logisch und klar ist, ist in Backendansichten nicht ganz so eindeutig. So zum Beispiel der Umgang mit hidden records  ...

Hidden Records im Backend anzeigen (Extbase Extensions)

Greift man in Extbase auf ein Repository mit - zum Beispiel ->findAll() - zu, erhält man alle sichtbaren Objekte der Tabelle. Das mag für Frontendextesions auch klar und richtig sein, will man jedoch in Backendmodulen Datensätze als "hide" markieren, verschwinden diese ins Nirvana da die einfache Query hidden records nicht berücksichtigt.

Abhilfe schaft hier die Anweisung in der Query:

$query->getQuerySettings()->setIgnoreEnableFields(TRUE)->setIncludeDeleted(FALSE);

Dann liefert die Query (für Backendextensions) auch richtiger weise "hidden records" .


Datensätze in Listenansicht verbergen / anzeigen

Hat man das einmal in eigenen Tabellen im Backend implementiert, wünscht sich natürlich direkt der Redakteur die Funktion der Standard TYPO3 Listen, nämlich Datensätze in der Listenansicht ein- und auszublenden.

Um das zu realisieren muss natürlich ein Hidden Feld in unserer Tabelle enthalten sein und in der TCA definiert werden. In der Columns Section des TCA ist üblicherweise für das hidden Field folgender Eintrag:

'hidden' => array(
    'exclude' => 1,
    'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.hidden',
    'config' => array(
        'type' => 'check',
    ),
)

Das Feld müssen wir dann noch im Model ergänzen:

/**
 * @var \int
 */
protected $hidden;
public function getHidden() {
    return $this->hidden;
}

public function setHidden($hidden) {
    $this->hidden = $hidden;
}

Dazu zwei passende Funktionen im Controller und schon kann die eigene Backendliste um die Funktion erweitert werden. Beispielhaft hier nur die hide-Action:

/**
 * Hide  Data
 */
public function hideDataAction() {
    if ($this->request->hasArgument('myModel')) {
        $myModelUid = $this->request->getArgument('myModel');
    }
    $model= $this->eventRepository->findByUid($myModelUid);
    $model->setHidden(1);
    $this->myModelRepository->update($model);

    $this->redirect('list');
}

Weitere Artikel zu diesem Thema:

Empfehlenswerte Lektüre:

Git. Verteilte Versionsverwaltung für Code und Dokumente

Das Buch richtet sich an Einsteiger und erfahrene Benutzer die ihre Kenntnisse vervollständigen wollen. Klar strukturiert, mit vielen Beispielen aus der Praxis, hilft das Buch die Funktionsweise von GIT zu verstehen und erklärt alle nötigen Befehele. Für Entwickler unbedingt empfehlenswert.

Kommentare

keine Kommentare vorhanden


Kommentar verfassen

Die Email Adresse wird nicht veröffentlicht.