[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Best Practice: Funktion in mehreren Modulen - 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/
Benutzeravatar
joachim123
Beiträge: 73
Registriert: 5. Feb 2007, 21:41
Wohnort: München
Kontaktdaten: Website

Best Practice: Funktion in mehreren Modulen

13. Nov 2016, 13:31

hi all,

bräuchte mal einen Tipp zur Wiederverwendung von kleinen Helper Funktionen in Modulen. Derzeit mache ich das innerhalb eines Modules so:

Code: Alles auswählen

        if (!function_exists('returnTextile')) {
            function returnTextile($inputValue) {
                # ...
                # ...
                return $inputValueModified;
            };
        }
Das habe ich dann in mehrerenModulen :( Wenn ich das stattdessen einmal in ein Template integriere habe ich es zwar überall im Frontend, im Backend gibts dann aber natürlich Fehler. Gibts einen schlauen Weg das so zu includen, dass es in Backend und Frontend zur Verfügung steht? Ich habe zwar mit Themes herumgespielt, aber mir gefällt die Idee nicht so, Basis-Helper dahin auszulagern...

Grüsse, Jo
am Ende wird alles gut.

Benutzeravatar
runstop64
Beiträge: 369
Registriert: 23. Okt 2012, 21:34
Wohnort: Hamburg
Kontaktdaten: Website Facebook Twitter

Re: Best Practice: Funktion in mehreren Modulen

13. Nov 2016, 16:17

Hi,

ausser dem Theme-Addon gibt es noch die Möglichkeit, das Project-Addon oder ein eigenes Addon zu nutzen. Das Prinzip ist jedoch bei allen Varianten ähnlich. Wenn Deine Funktionen überall zur Verfügung haben möchtest, ist die eine oder andere Form der Auslagerung nötig.

Mit Kombination von Theme- und Developer-Addon kannst Du übrigens den Modul-Code zusammen mit Deinen übrigen Dateien auch über den Theme-Ordner verwalten und hast damit alle Daten Deiner Website an einem Ort.
Viele Grüße,
Daniel


studio-ahoi.de | Referenzen | Friends Of REDAXO

Benutzeravatar
runstop64
Beiträge: 369
Registriert: 23. Okt 2012, 21:34
Wohnort: Hamburg
Kontaktdaten: Website Facebook Twitter

Re: Best Practice: Funktion in mehreren Modulen

13. Nov 2016, 16:36

Du kannst allerdings auch versuchen, das Template mit REX_TEMPLATE[...] jeweils direkt in Deinen Module aufzurufen.
Viele Grüße,
Daniel


studio-ahoi.de | Referenzen | Friends Of REDAXO

Benutzeravatar
joachim123
Beiträge: 73
Registriert: 5. Feb 2007, 21:41
Wohnort: München
Kontaktdaten: Website

Re: Best Practice: Funktion in mehreren Modulen

13. Nov 2016, 16:50

runstop64 hat geschrieben:Du kannst allerdings auch versuchen, das Template mit REX_TEMPLATE[...] jeweils direkt in Deinen Module aufzurufen.
Das ist ja lustig, wusste nicht, dass man auch Templates in Module einbinden kann. Wäre für kleine Helper ja durchaus eine Möglichkeit...

Merci, Joachim
am Ende wird alles gut.

Phoebus Ryan
Beiträge: 164
Registriert: 27. Okt 2014, 15:57

Re: Best Practice: Funktion in mehreren Modulen

16. Nov 2016, 09:30

Die bessere Möglichkeit, wäre im Addon 'project' eine Klasse anzulegen und alle Funktionen als statische Methoden anzulegen. Die Klasse wird dann via autoload geladen und ist überall verfügbar. Die Lösung wäre halt nicht so hacky...

Benutzeravatar
joachim123
Beiträge: 73
Registriert: 5. Feb 2007, 21:41
Wohnort: München
Kontaktdaten: Website

Re: Best Practice: Funktion in mehreren Modulen

16. Nov 2016, 22:22

Phoebus Ryan hat geschrieben:Die bessere Möglichkeit, wäre im Addon 'project' eine Klasse anzulegen und alle Funktionen als statische Methoden anzulegen. Die Klasse wird dann via autoload geladen und ist überall verfügbar. Die Lösung wäre halt nicht so hacky...
klingt sauber, aber "project" find ich net für Redaxo5. Ich habe es mit "Theme" probiert, aber verstehe nicht ganz, wie ich das mit dem Autoload läuft. Füge ich in theme/privat/lib/functions.php eine Klasse "wasAuchImmer" hinzu bekomme ich immer solche Fehler: Fatal error: Cannot redeclare class "wasAuchImmer"

[UPDATE]
wenn ich das richtig verstanden habe, kann man im Ordner theme/privat/lib/ z.B MyHelper.php mit der Klasse MyHelper ablegen und dann problemlos überall mit MyHelper::myStaticMethod() nutzen.

Grüsse, Jo
am Ende wird alles gut.

Phoebus Ryan
Beiträge: 164
Registriert: 27. Okt 2014, 15:57

Re: Best Practice: Funktion in mehreren Modulen

17. Nov 2016, 09:15

Das Addon 'project' ist standardmässig dabei in Redaxo 5.2. Wenn du eine kleinere Version hast und nicht updaten möchtest, kannst du das auch einfach aus der neusten Version nehmen. Es ist kompatibel und das Addon ist extra für genau deinen Zweck gemacht. :-)

Damit könntest du wie du richtig geschrieben hast einfach im Addon project, also unter /redaxo/addons/project im Ordner 'lib' oder 'vendor' Klassen anlegen, die automatisch geladen werden.

Benutzeravatar
joachim123
Beiträge: 73
Registriert: 5. Feb 2007, 21:41
Wohnort: München
Kontaktdaten: Website

Re: Best Practice: Funktion in mehreren Modulen

17. Nov 2016, 10:33

Phoebus Ryan hat geschrieben: Damit könntest du wie du richtig geschrieben hast einfach im Addon project, also unter /redaxo/addons/project im Ordner 'lib' oder 'vendor' Klassen anlegen, die automatisch geladen werden.
Ahh, cool, klappt problemlos. Kann man per project auch customized Backend-Css-Dateien integrieren? Würde man den Pfad dann in der Boot.php notieren?

Danke erstmal für die Hilfe :)

Grüsse, Jo
am Ende wird alles gut.

Phoebus Ryan
Beiträge: 164
Registriert: 27. Okt 2014, 15:57

Re: Best Practice: Funktion in mehreren Modulen

18. Nov 2016, 09:31

Ja klar. Einfach in der boot.php des 'project'-Addons folgendes einfügen:

rex_view::addCssFile($this->getAssetsUrl('xxx.css'));

oder natürlich

rex_view::addJsFile($this->getAssetsUrl(''xxx.js''));

Die Files müssten jeweils im Ordner /redaxo/src/addons/project/assets liegen.

Benutzeravatar
joachim123
Beiträge: 73
Registriert: 5. Feb 2007, 21:41
Wohnort: München
Kontaktdaten: Website

Re: Best Practice: Funktion in mehreren Modulen

29. Nov 2016, 00:51

Servus nochmal,

so wirds gemacht, klappt prima, danke Euch für die raschen Antworten :)

Grüsse und schöne Zeit, Joachim
am Ende wird alles gut.

Zurück zu „Module/Aktionen [R5]“