langnickellangnickel MitgliedKommentare: 65 Danke erhalten: 7 Mitglied seit: 10. April

Gibt es Beispiele wie ich ein multi_selection Attribut mit custom Model in und aus der Resource bringe?

Antworten

  • langnickellangnickel MitgliedKommentare: 65 Danke erhalten: 7 Mitglied seit: 10. April

    Ok, da ich das Teil per code angelegt habe, hat es zwar im Shop überall verwenden können, aber in der API war es noch nicht bereitgestellt. Hab dann per Hand mal die Models generiert, und schon wurde es in der API bereitsgestellt und get, update etc.. ging. Nun hab ich noch das Problem, dass die Dinger halt mit den IDs abgespeichert "|id1|id2|..." werden, was ja auch ok, nur wenn ich halt die IDs nicht weiß und nen objekt das der zugrundeliegenden Entity entspricht, wäre es wirklich schön wenn die API die Teile gleich anlegen würde anstatt NULL einzutragen.

     

    Wie bekomm ich das am Besten hin wenn ich die IDs nicht wissen kann?

  • derwunnerderwunner MitgliedKommentare: 165 Danke erhalten: 27 Mitglied seit: 2. Januar

    Hallo,

     

    ich hoffe, ich hab deine Fragestellung richtig verstanden: Wenn Du bereits die zugrunde liegenden Model Objekte hast, nur ohne Datenbank-ID und Du weißt, dass sie genauso in der Datenbank stehen, dann musst Du doch einfach nur noch einen SELECT Query abfeuern und das ganze dann wieder in Deine vorhandenen Objekte mergen. Leg Dir dafür am besten eine neue Methode in dem dafür vorgesehenen Repository an.

     

     

    MFG

     

    derwunner

  • langnickellangnickel MitgliedKommentare: 65 Danke erhalten: 7 bearbeitet 17. Juli Mitglied seit: 10. April

    Das hatte ich dann auch letzendlich vor aber irgendwie bekomm ich die Artikel-Api nicht überschrieben, bzw find kein passendes event/hook.

     

    Ok vielleicht istd as etwas mehr Anschaulich: Ich hab ein custom Model Tag, mit drei Feldern. ID, Name und Description. Das wurde per multi_selection auf das Attributfeld ln_article_tags gelegt. Wenn ich nun dem Artikel ein neues Tag hinzufüge (per Backend oder per Code) schreibt er in ln_article_tags |1| rein. Wenn ich ein weiteres hinzufüge wird daraus |1|2| was ja soweit ok ist. Ich bekomme es im Front und Backend hin und herreferenziert. Nun ist das Problem, dass er im API get halt auch nur "lnArticleTags": "|1|2|" ausgibt (obwohl der Standard hier ohne weiteres die aufgelösten objekte ausgeben könne, aber naja sei's drum). Und auch umgekehrt erwartet Shopware bei dem put/post die IDs und nicht fertige Objekte. Also das hier: "lnArticleTags": [ { "name": "SHORT", "description": "Kurz" }, { "name": "METAL", "description": "Metall" } ] akzeptiert er nicht (obwohl der Standard ohne weiteres die Objekte auflösen könnte. Das einzige was mir einfallen würde, wenn ich das Feld id rausschmeisse und name als Schlüssel benutze. Mach ich aber relativ ungern. 

  • langnickellangnickel MitgliedKommentare: 65 Danke erhalten: 7 Mitglied seit: 10. April

    Ok, ich häng mich hier rein

    'Enlight_Controller_Action_PreDispatch_Api_Articles'
    'Enlight_Controller_Action_PostDispatch_Api_Articles'

    und modifizier data aus der view, bis ich was besseres hab :)

  • langnickellangnickel MitgliedKommentare: 65 Danke erhalten: 7 bearbeitet 17. Juli Mitglied seit: 10. April

    Manchmal steht man auch aufm Schlauch _-_

    https://developers.shopware.com/developers-guide/rest-api/extend-api-resource/

    getList, getOne und prepareAssociatedData dementsprechend überschrieben und dann klappts. Ganz ohne postDispatch request body datenmanipulation ^^

Anmelden oder Registrieren, um zu kommentieren.