T3 Campus T3 Campus

Erstellen von Model Properties ohne DB Feld

Ich zeige dir, wie du in einem Model eine Eigenschaft erstellen kannst, mit allen Vorteilen, jedoch ohne dass sie persistent in der Datenbank gespeichert wird.

Ein Extbase Model entspricht in der Regel eine Datenbanktabelle und die Eigenschaften eines Models entsprechen die Eigenschaften, oder Spalten, in dieser Datenbanktabelle.

Jedoch benötigt man manchmal Eigenschaften in einem Model, die nicht in der Datenbank gespeichert werden müssen. Zum Beispiel sind das folgende Felder:

  1. Passwort bestätigen 
  2. E-Mail bestätigen
  3. Felder, die bestimmte Prozesse anstoßen, wie E-Mail verschicken oder Datei exportieren

Solche Felder werden nur für diesen Request benötigt, um im Validator Eingaben zu prüfen oder E-Mails zu verschicken oder Dateien zu exportieren. Dennoch möchte man diese Eigenschaften in dem Model haben, damit man alle Daten in einem Formular in einem Objekt kapseln kann.

Für diese Fälle benötigt man nicht persistente Model-Eigenschaften

Das geht in TYPO3 zum Glück sehr einfach. Tatsächlich erstellt man solche Eigenschaften auf die gleiche Art und Weise, wie man normale Eigenschaften erstellt. Man lässt lediglich die TCA und SQL Einträge weg.

Model erweitern

Wir erstellen manuell eine neue Eigenschaft in der Klasse des Models:

/**
  * note
  * @var string
  */
 protected $note = '';

Danach erstellen wir die GET - und SET - Methoden:

/**
  * Returns the note
  *
  * @return string $note
  */
  public function getNote()
  {
      return $this->note;
  }
    
  /**
    * Sets the note
    *
    * @param string $note
    * @return void
   */
  public function setNote($note)
  {
      $this->note = $note;
  }

View erweitern

Danach erweitern wir die Template- oder Partialdatei in denen die Formularfelder für dieses Model definiert sind:

<div class="form-group">
  <label for="name" class="form-label">
      <f:translate key="tx_campusfirstextension_domain_model_project.note" />
  </label>
  <f:form.textfield property="note" class="form-control" />
</div>

Wichtig: auch hier als property.

Jetzt können wir das Formular um die neue Eigenschaft ausfüllen und absenden. TYPO3 mappt auch diesen Wert in das Objekt, ohne diese Information in die Datenbank zu speichern.

Wir können nun dennoch Validator darauf ausführen und diese Information mit der GET - Methode im Controller abrufen und weiterverarbeiten:

$note = $project->getNote();

Fazit

Du siehst, es ist sehr einfach in TYPO3 neue Formularfelder zu erstellen und sie einem Model zuzuweisen. Du kannst selbst entscheiden, ob diese Felder bzw. Eigenschaften in der Datenbank gespeichert werden sollen.

Bereit mehr zu lernen?

Dann komme in meine TYPO3 Onlineschule

Als Mitglied des T3 Campus für TYPO3 Schulungen erhältst du eine einzigartige Lernplattform, um professionelle Webseiten mit TYPO3 zu erstellen. Egal, ob du ein Einsteiger, Umsteiger oder bereits erfahren bist – hier findest du die passenden Lernvideos für dich.

Kevin Chileong Lee

Gründer vom T3 Campus, TYPO3 Experte mit 10+ Jahren Erfahrung, TYPO3 Liebhaber.

Ich helfe dir dabei, deine Projekte in TYPO3 umzusetzen.

Insbesondere für TYPO3 Einsteiger biete ich zahlreiche kostenfreie Tutorials und kostenpflichtige Kurse rund um TYPO3 an.
Damit kannst du in wenigen Tagen auch ohne Vorkenntnisse deine erste TYPO3 Webseite erstellen und Erweiterungen programmieren.

Auf meinem YouTube-Kanal findest du viele praktische Beispiele und Videotutorials als auch allgemein Videos zu diversen TYPO3 Themen.

Neber den TYPO3 Tutorials und Kopiervorlagen, schreibe ich auch Artikel auf meinem Blog über diverse Themen und Fragen, die die meisten TYPO3 Einsteiger, haben.

Falls du ein TYPO3 Coaching suchst, dann stehe ich dir in einer 1:1 Trainingssession zur Verfügung.

Wenn du auf dem Laufenden sein möchtest über meine Projekte, dann abonniere den Newsletter.