Beiträge von markowski

    Hallo,

    gibt es eine Möglichkeit oder eine Lösung wie man einen Kontakt aus der Kontakt-Komponente inkl. Kontaktdaten und dem Kontaktformular in einem Modul anzeigen kann?


    Ich vermisse diese Funktion bereits seit einiger Zeit in Joomla.

    Mit so einer Lösung könnte man die Kontakt-Komponente effektiver und flexibler nutzen. Ggf. könnte man so sogar wieder auf eine Erweiterung zusätzlich verzichten und währe näher am Core dran.




    Mirko

    Ich würde gern das Thema noch mal hoch holen.


    Ich hab mir die Sache mit den Tags noch mal in Ruhe angeschaut, werd aber nicht ganz schlau draus. In der #__content_types ist die Erweiterung eingetragen. in den #__ucm Tabellen nicht. Trage ich jetzt aber ein Tag händisch in der Datenbank ein, wird es auch korrekt angezeigt.


    Ich hab das Tutorial auf https://blog.astrid-guenther.de/joomla-tags verwendet, aber bislang ohne erfolg. Felder und Co. werden angezeigt nur werden die Tags nicht gespeichert. Hatte schon überlegt das händisch zu machen, ist aber wahrscheinlich keine sinnvolle Lösung.


    Kann mir jemand auf die Sprünge helfen bezüglich der #__ucm Tabellen, für was sind die eigentlich da, was machen die Joomla?


    Mirko

    Ich hab's hinbekommen! Manchmal sieht man den Wald vor lauten Bäumen nicht.


    Es ging sogar relativ simpel via "getUserState" bzw. "setUserState".


    In der View der Komponente musste ich bei "protected function polulateState()" die Werte aus der Formularrückgabe zusätzlich via setUserState ablegen. Im Modul dann wieder via getUserState holen.


    Danke für eure Anregungen, ohne die wäre ich gar nicht weiter gekommen.


    Mirko

    Nur so hingedacht:


    Wohl am ehesten über die Nutzer-Session?? $app->setUserState($key, $value) und $app->getUserState($key, $default = null). Aber ich weiß halt nicht, wie das Modul da genau filtert und zu welchem Zeitpunkt.


    Andere, vielleicht parallele, Variante wäre vielleicht, die Filterdaten in der Pagination festzuhalten. Als "stinknormale" Request-GET-Daten. Da arbeite ich dann bevorzugt mit pagination->getPaginationLinks(), weil mir persönlich das overriden via Joomlas JLayouts links.php und link.php "einfacher" erscheint. (Aber ich glaub, das ist sowieso so üblich in Joomla-Frontend.)

    Hab es mal mit $app->setUserState() und $app->getUserState() versucht, scheint nicht zu funktionieren oder ich hab was falsch gemacht. Versende ich das Formular des Moduls funktioniert "UserState" sowohl im Modul, wie auch in der Komponente. Nur leider werden die Werte beim Seitenwechseln (Pagination) nicht übernommen.


    Mirko

    Bin davon ausgegangen, dass das nur innerhalb der Komponente funktioniert. Zudem werden einzelne Formularfelder auf Basis der Datenbank zusammengebaut. In der Komponente gibt es auch ein Filterformular was perfekt funktioniert. Nur benötige ich das Formular auch als Modul damit ich es außerhalb der Komponente aufrufen kann.


    Mirko

    Nein, ich filtere nicht mit JS. Das Filter-Formular ist mit einem Modul realisiert. Die Daten Ansicht werden über eine Komponente ausgegeben. Beim versenden des Formulars holt sich die Komponente (im Model) die Daten über "$this->getUserStateFromRequest();" das funktioniert auch. Das Modul macht das gleiche.


    Wenn ich aber auf Seite 2 der Komponente wechsle, werden die Filterdaten nicht übernommen – was an sich auch logisch, da das Filter-Formular im Modul ja nicht versendet wird.


    Ich will aber die eingegebenen Daten behalten und suche dafür eine Lösung - wenn möglich eine einfache und Joomla konforme Lösung.



    Mirko

    Hallo,

    hat jemand einen Tipp für mich wie ich Formulardaten nach dem Reload der Seite beibehalten kann?


    Ich habe eine eigene Komponente geschrieben welche im Frontend alle Einträge als Liste ausgibt inkl. Pagination. Die Liste wird über ein Modul gefiltert. Das funktioniert soweit auch. Nur wenn ich die Pagination nutze und z.B. auf Seite Zwei springe wird das Modul (Formular) ja neu geladen und alle Werte sind weg – demzufolge wird die Liste auch nicht mehr gefiltert.


    Gibt es eine Möglichkeit die Werte zu merken? Im Komponenten-Formular würde dies ja mit "$this->setState()" gemacht – geht das auch irgendwie im Modul?


    Mirko

    Danke für eure Hilfe. Der Fehler lag in der events.xml hatte beim Namespace-Tag "path="src" vergessen. Das mit der "autoload_psr4.php" war trotzdem sehr hilfreich, ohne das löschen der Datei hat es erst auch nicht funktioniert.


    Danke noch mal. Wird bestimmt nicht meine letzte Meldung zu dem Thema sein.

    Hallo,

    wollte mich heute mal mit der Komponentenentwicklung für Joomla 4 beschäftigen und hab ein an sich ganz gutes Tutorial von Astrid Günther gefunden. Soweit so gut, nur leider hakt es bereits bei der ersten Ansicht im Backend. Joomla sagt mir:


    Zitat

    Class 'EventNamespace\Component\Events\Administrator\Extension\EventsComponent' not found


    Danach kommt die Call-Stack Liste, da listet er mir die Datei "JROOT/administrator/components/com_events/services/provider.php:34" auf. Hab schon alles überprüft, steht aber irgendwie auf dem Schlauch. Hier die provider.php:



    Noch als Hinweis: Ich arbeite derzeit Lokal mit MAMP auf OS X.


    Kann mir jemand einen Tipp geben oder kennt jemand noch ein gutes Tutorial?



    Mirko

    Hallo und Danke,

    hat soweit funktioniert das ich zumindest an die Daten ran komme:

    PHP
    $app = JFactory::getApplication();
            $input = $app->input->files;
            $file = $input->get('jform');
            $folder = '/Users/chairlines20/Documents/Joomla/Grundinstallation/images/csv/imports/';
            
            JFile::upload($file['tmp_name'], $folder);


    Allerdings wird die Datei zum Zielverzeichnis verschoben/gespeichert. Kann es sein das dies aber daran liegt, das ich Lokal arbeite?


    Mirko

    Hallo,

    vielleicht kann mir jemand einen Tipp geben: Ich habe im Backend ein Upload-Form-Feld in einer eigenen Komponente. Nun möchte ich die Datei lesen und speichern. Dazu habe ich im Model die Funktion "public function save($data) {}" eingebaut. Der Upload kommt auch in in $data an, nur eben als String – wo aber ist die Datei?


    Code
    public function save($data) {
            
            $item = (object)$data;
            print_r($item->fileUpload);
            exit;

    Bin über jeden Tipp dankbar.


    Mirko