[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
yForm: wie private Feldtype einbinden? - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Christoph Böcker
Beiträge: 6
Registriert: 1. Dez 2014, 23:19

yForm: wie private Feldtype einbinden?

13. Mai 2017, 17:34

Hallo zusammen

bevor die Frage falsch verstanden wird: ja, ich weiß schon wie ich neue Feldtypen einbinden kann, also was wie in welches Verzeichnis von yForm kopiert und benannt werden muss. Das Problem ist ein anderes:

Es gibt ja schon viele Feldtypen, aber irgendwas fehlt halt immer mal. Wenn der "fehlende" Typ von allgemeinem Interesse ist, bietet sich ein Pull-Request an und er wird hoffentlich in yForm aufgenommen. Dann ist das Problem erledigt. Bsp: ich habe grade einen Request für ein be_media_category eröffnet.

Aber wie handhabe ich sinnvoll Feldtypen, die nun eben nicht von allgemeinem Interesse sind, sondern nur für mein Projekt von Belang? Bsp: im Prinzip nutze ich ein be_table, aber eines der Felder soll ein Select sein. Ist so im Standard weder vorgesehen noch konfigurierbar (soweit ich das sehe). Aber ich kann mir ja eine spezialisierte Variante stricken, die aus be_table kopiert ist und HTML erzeugt, das wei das HTML von be_table funktioniert, nur eben anders definierten Feldern als input.

Aber wie handhabe ich die Dateien von "be_privates_feld"?

  • Kann ich die Dateien in meinem Add-On oder im Project-Add-On ablegen, also getrennt von yForm selbst, so dass mir keine Dateien gelöscht werden bei Updates von yForm? Aber wie findet yForm die Dateien, läuft das über eine Standardsuche ähnlich wie mit dem core-Verzeichnis für Fragmente (wie müsste die Verzichnisstruktur aussehen) oder indem ich die boot.php nutze (und wenn ja: wie)?
  • Oder löscht yForm gar keine Dateien beim Update, so dass ich mir eh keinen Kopp machen muss und die privaten Dateien unbesorgt in das yForm-Verzeichnis packen kann?
  • Oder wäre es sinnvoll, die Quell-Dateien getrennt zu halten und durch re-install meines Add-On oder des Project-Add-On die nötigen Dateien neu in das yForm-Verzeichnis zu kopieren?
Danke vorab für eure Unterstützung.

Viele Grüße
Chris

Christoph Böcker
Beiträge: 6
Registriert: 1. Dez 2014, 23:19

Re: yForm: wie private Feldtype einbinden?

19. Mai 2017, 10:45

Hallo zusammen

in project/boot.php habe ich einen schlauen Hinweis gefunden und auf der Basis eine Musterlösung erarbeitet. Was sonst noch bei eigenen Feldtypen zu beachten ist, lasse ich außen vor. Mein funktionsfähiges (na gut: bei mir funktionsfähiges) Beispiel einer Tab-Navigation, mit dem ich getestet habe, ist als Zip angehängt.

Im Grunde bestehen ein Feldtyp aus den zwei Dateien:

<fieldtype>.php enthält die Feldtyp-Klasse.
value.<fieldtype>.tpl.php generiert den HTML-Code.

Texte sollten der guten Ordnung halber in lang-Dateien ausgelagert werden; es geht natürlich auch anders.

In <myaddon>/lib platzierte Dateien werden automatisch geladen. Die aus <fieldtype>.php aufgerufene value.<fieldtype>.tpl.php findet das System aber nur, wenn yform der Suchpfad auf die Template ausdrücklich mitgeteilt wird. Das sollte in der boot.php des Addons passieren.

Code: Alles auswählen

rex_yform::addTemplatePath($this->getPath('templates/yform'));
yform sucht derzeit im Template-Verzeichnis nach zwei Unterverzeichnissen (bootstrap und classic). Entsprechend sollte es value.<fieldtype>.tpl.php in zwei Versionen geben.

Die weitere Unterteilung von lib und templates zunächst in yform dient einfach nur der Übersichtlichkeit und ist nicht zwingend erforderlich.

Damit ergibt sich diese Verzeichnis- und Dateistruktur

Code: Alles auswählen

<myaddon>/boot.php
<myaddon>/lib/yform/values/<fieldtype>.php
<myaddon>/templates/yform/bootstrap/value.<fieldtype>.tpl.php
<myaddon>/templates/yform/classic/value.<fieldtype>.tpl.php
<myaddon>/lang/de_de.lang
Noch was zum Beispiel:

Da ich eh eine Tab-Navigation brauchte, hab ich sie auch gleich als Beispiel genommen, um die oben beschriebene Dateistruktur zu testen. Die Tabs funktionieren nur mit Bootstrap. Die Version unter classic zeigt als Fallback Fieldsets an.
yform_tabs.zip
Beispiel
(12.95 KiB) 827-mal heruntergeladen

Zurück zu „AddOns / Packages [R5]“