Zum Inhalt springen

Ext:form - Speicherort der Formulare festlegen

Ab TYPO3 8 LTS

Mit TYPO3 8 LTS wurde auch eine komplett überarbeitete form-Erweiterung eingeführt. Mit dieser ist es jetzt sehr einfach, auch komplexere Formulare im Backend zu erstellen.

Die Konfigurationen dieser Formulare werden für jedes Formular in einer eigenen Konfigurationsdatei im Yaml-Format gespeichert. So können diese Dateien ganz einfach in andere TYPO3-Projekte kopiert und wiederverwendet werden. Auch die Nutzung von Versionierungssystemen wie Git ist jetzt für die Formulardefinitionen möglich.

Standardmäßig werden die Formulardefinitionen im Ordner fileadmin/user_upload/ gespeichert. 

Das kann man aber recht einfach ändern und so z.B. ein eigenes Verzeichnis unterhalb von fileadmin/ oder in einer eigenen Extension verwenden.

Die Speicherorte werden über den Parameter allowedFileMounts in der Datei EXT:form/Configuration/Yaml/BaseSetup.yaml definiert. Der relevante Teil dieser Datei sieht so aus:

TYPO3:
  CMS:
    Form:
      persistenceManager:
        allowedFileMounts:
          10: 1:/user_upload/
          ...
          ...

 

Die komplette Datei kann im Git-Repository eingesehen werden.

In Zeile 6 wird als Objekt 10 der Speicherort Nr. 1 (= fileadmin) und das darin liegende Verzeichnis user_upload/ definiert.

Man kann nun relativ einfach andere Verzeichnisse hinzufügen.

Legen Sie dazu an einem beliebigen Ort eine Datei an, diese könnte zum Beispiel heissen
myFormSetup.yaml

Sie können diese Datei unterhalb von fileadmin/ anlegen oder auch innerhalb eines Extension-Verzeichnisses, wenn Sie z.B. eine eigene Template-Extension verwenden.

In diese Datei schreiben Sie aber jetzt nur die notwendigen Zeilen, die Sie von der BaseSetup.yaml überschreiben möchten.

Wenn Sie einen Ordner unterhalb von fileadmin/ verwenden wollen (Beispiel):

TYPO3:
  CMS:
    Form:
      persistenceManager:
        allowedFileMounts:
          20: 1:/myForms/

 

Wenn Sie einen Ordner innerhalb Ihrer Extension verwenden wollen:

TYPO3:
  CMS:
    Form:
      persistenceManager:
        allowedExtensionPaths:
          10: EXT:meineExtension/Resources/Private/myForms/
        allowSaveToExtensionPaths: true
        allowDeleteFromExtensionPaths: true

 

Beim Anlegen eines neuen Formulars kann dann ausgewählt werden, wo die Konfiguration für dieses Formular gespeichert werden soll.

Wenn Sie die Standarddefinition user_upload/ entfernen wollen, verwenden Sie statt 20 die 10 in der myFormSetup.yaml.

Der Ordner (im Beispiel myForms/) muss natürlich existieren!

Sofern man eine Extension verwendet, kann man über die Parameter allowSaveToExtensionPaths und allowDeleteFromExtensionPaths erlauben (true), dass Backend-User die Formulare innerhalb einer Extension bearbeiten bzw. löschen dürfen. Standardmäßig stehen bei Parameter auf false.

Jetzt muss die neue Datei noch der Form-Extension bekannt gemacht werden.

Dazu die folgenden Zeilen in das TypoScript-Setup schreiben:

plugin.tx_form.settings.yamlConfigurations.100 = pfad/zur/myFormSetup.yaml
module.tx_form.settings.yamlConfigurations.100 = pfad/zur/myFormSetup.yaml

## Natürlich könnte auch hier der Pfad zu einer Extension angegeben werden:
## plugin.tx_form.settings.yamlConfigurations.100 = EXT:meineExtension/Resources/Private/myForms/myFormSetup.yaml
## module.tx_form.settings.yamlConfigurations.100 = EXT:meineExtension/Resources/Private/myForms/myFormSetup.yaml

 

Legt man jetzt über das Form-Backendmodul ein neues Formular an, kann im ersten Schritt der Speicherort (form storage) ausgewählt werden.

Aktualisiert: 04.05.2023