Beiträge von opalka

    Hallo,

    weiß jemand, wie ich eine Toolbar, die ich über den DI-Container gezogen habe, an mod_toolbar übergebe?

    Anstatt

    Code
    $toolbar = Toolbar::getInstance();

    habe ich

    Code
    $toolbar = Factory::getContainer()->get('toolbar.factory')->createToolbar('toolbar');

    mir so das Objekt geholt.

    Es wird aber nicht im Toolbarbereich des Backendes angezeigt.

    Über xdebug sehe ich, dass das Toolbar-Objekt keine Instanz hat, kann es aber benutzen und auch rendern. Nur will ich es ja nicht selber rendern, sonder mod_toolbar soll es ja machen.

    Finde in den Standard-Komponenten leider nur ein Beispiel bei com_contenthistory, nur da wird die Toolbar selber gerendert. Ansonsten benutzen alle Komponenten die getInstance() Methode.

    Toolbar selber macht es ja in getInstance genauso, nur wird das DI Objekt dann als Instanz gespeichert:

    Code
    self::$instances[$name] = Factory::getContainer()->get(ToolbarFactoryInterface::class)->createToolbar($name);

    Hallo,

    du kannst Dir ein eigenen Feldtyp anlegen.

    Das kannst du dann ganz normal in deiner XML-Definition benutzen:


    Die PHP-Datei muss übrigens im Ordner "Field" gespeichert werden. Wenn du einen Src-Pfad für den Namespace definiert hast, dann [Src-Path]/Field.

    Der Name der Datei wäre dann ContentitemsField.php.

    ja, weil es ein NOT NULL ist. Man hätte es ja auch als NULL anlegen können. Also gibt es kein besonderen Grund dafür z.B. Versionierung oder ähnliches?

    Mir geht es eigentlich nur darum, ob ich bei meinen eigenen Komponenten es genauso handhaben sollte.

    Hatte mich nur gewundert, weil man so ja nur sehen kann, ob ein Item bereits modifiziert ist, wenn man modified != created vergleicht.

    Hallo,

    kann mir jemand sagen, warum das Feld "modified" schon bei Erstellung eines Elementes gesetzt wird, obwohl es ja eigentlich noch nicht verändert wurde. Egal welche Komponente (Content, Banner etc.) setzen beim ersten Speichern schon das "modified"-Feld. Sehe nicht wirklich den Sinn darin. Es war wohl schon immer so. Joomla 3 händelt es ebenso.

    Was ist mit

    SQL
    SELECT `extension_id`, `name`, `manifest_cache` FROM `PREFIX_extensions` WHERE `manifest_cache` like '%"description":,%' 

    oder

    SQL
    SELECT `extension_id`, `name`, `manifest_cache` FROM `PREFIX_extensions` WHERE `manifest_cache` like '%"description":"",%' 

    Wird da irgendetwas zurückgeliefert?

    Der Fehler wird geworfen, weil bei einer Erweiterung versucht die Variable Description zu entfernen, die aber nicht vorhanden ist.

    Hast Du Zugriff auf die Datenbank z.B. via phpmyadmin?

    Dann gibt mal folgendes ein:

    SQL
    SELECT `extension_id`, `name`, `manifest_cache` FROM `PREFIX_extensions` WHERE `manifest_cache` not like '%description%'

    PREFIX bitte durch deinen Prefix ersetzen.


    Und schau mal, welche Erweiterung da Probleme macht.

    Hab es jetzt über ein Plugin gelöst. Das reicht mir. Falls es jemand braucht, hier ist der Ansatz:

    Hallo,

    ich würde gerne die Funktionen parseSefRoute und buildSefRoute überschreiben. Mir geht es um das Segement 'component/', welches bei menülosen Links hinzugefügt wird. Würde es gerne ersetzen, habe aber bisher keine Möglichkeit gefunden, ausser es hart in SiteRouter zu ändern. Beim nächsten Update wäre es dann aber wieder weg.

    Hat jemand einen Tipp oder Ansatz für mich? Wahrscheinlich lässt es sich nur über ein Plugin lösen.

    Gruß

    Eine Klasse die entweder von ItemModel, ListModel, AdminModel oder Table abgeleitet wird und sich entweder unter administrator/components/com_irgendwas (Backend) oder components/com_irgendwas (Frontend) befindet.

    Mir geht es nicht darum, ob es überhaupt funktioniert, denn es funktioniert ja. Nur weil es geht, heisst es ja nicht, dass man es auch machen sollte. Vielleicht aus Sicherheitsgründen oder was auch immer.

    Hallo,

    ist es ok, wenn ich das Frontend-Model/Table vom Backend-Model/Table erben lasse und gegebenfalls nur die Funktionen überschreibe, die einer Änderung bedarf? Oder sollte man aus bestimmten Gründen darauf verzichten.

    Es geht konkret darum, dass Benutzer Daten ändern sollen, aber keinen Zugriff auf das Backend haben. Und bevor ich jetzt letztenendes alles 2x schreibe, macht es ja sinn, die Klassen zu recyclen.

    Gruß

    Hallo,

    die MyWalks Komponente ist für Joomla 4. Für Joomla 3 solltest Du dich lieber an diese Tutorial halten: Joomla 3 Developing an MVC Component

    Natürlich braucht man nicht alle Dateien für eine Komponente, aber ein paar sind schon erforderlich, die da wären:

    • Die Beschreibung der Komponente (component-name.xml)
    • Der Einstiegspunkt (component-name.php)
    • Der Basis-Controller (controller.php)
    • Und eine View mit Template.

    Das ist das absolute Minimum um eine Komponente zum Laufen zu bringen, macht aber noch keinen Spaß, wenn man nicht nur ein Hello Welt ausgeben möchte. Um komfortable auf die Daten zugreifen zu können brauchst du noch eine Model-Klasse, um Daten zu speichern eine Table-Klasse und eine Controller-Klasse für deine View. Wenn Du dich an die Richtlinie hälst, dann brauchst du in den meisten Klassen noch nicht einmal viel Code schreiben, da die Basisklassen das meiste schon von sich aus übernehmen.

    Viel Glück.

    Hallo christine2, Hallo astrid,

    danke für euren Hinweis. astrid ich habe mir jetzt mal deine Foo Komponente installiert und der Web Service Abruf funktioniert. Ich vermute, es liegt daran, dass du einen Content-Type über das Installationsscript hinzugefügt hast. Werde dies bei meiner Komponente auch noch einmal testen und dann Rückmeldung geben.

    Ist der Content-Type für den Web Service zwingend nötig?

    Ich habe nichts gegen das Api-Verzeichnis. Ich fand es nur blöd es per Hand dort reinzukopieren, aber nachdem ich mir deine Komponente angeschaut habe, weis ich, dass es den <api> Tag in der Extension Datei gibt und nun werden die Dateien automatisch dorthin kopiert.

    Gruß