Kategorie mit Bild über REST-API verknüpfen

Hat jemand eine bestehende Kategorie mit einem bestehenden Bild via REST API verknüpft und kann über die Syntax berichten? Laut API kann man der Kategorie ein „media Array“ übergeben. Allerdings tritt dann folgender Doctrine Fehler auf: Errormesage: Expected value of type „Shopware\Models\Media\Media“ for association field „Shopware\Models\Category\Category#$media“, got „array“ instead. Oder ist die Dokumentation der API bei diesem Link verkehrt bzw. wurde geändert und eine Verknüpfung mit Bildern nicht möglich?

Hi,

 

etwas Code wäre nett :wink:

VG

Hey,

hier mal das Beispiel mit einem Array.

$createCategory = array(
                'parentId' => $supplier['id'],
                'name' => $supplier['name'],
                "cmsHeadline" => "Produkte von " . $supplier['name'],
                "cmsText" => $supplier['description'],
                "active" => true,
                "attribute" => array(
                    1 => $noTopseller
                ),
                "media" => array(
                    "mediaID" => $mediaId
                )
            );
            
            $result = $this -> post('categories', $createCategory);

Über das Shopware eigene Debug Plugin erhält man beim Aufruf einer Kategorie mit einem händisch zugewiesenen Bild auch das media array mit weiteren Attributen.

In dem Zusammenhang wäre vielleicht auch interessent, was bei einem get(‚categories‘) oder einem get(‚categories/id‘) von Shopware zurück kommt. Denn ein media Array oder auch die weiteren Attribute wie cmsText etc. sind bei mir nicht vorhanden.

 

Hi,

also ich glaube an der Stelle scheint die Doku, mal wieder, falsch zu sein.

Ich habe versucht media => array(‘link’ => xyz.jpg)

Dies hat aber keine Auswirkung.

Ich denke bei dir ist das Problem, dass die MediaId nicht existiert? Hast du mal die DB durchforstet? 

Mein Rückgabewert beim GET:

array(27) {
      'id' =>
      int(9)
      'parentId' =>
      int(3)
      'streamId' =>
      NULL
      'name' =>
      string(12) "Aschenbecher"
      'position' =>
      NULL
      'metaTitle' =>
      NULL
      'metaKeywords' =>
      string(11) "keywordTest"
      'metaDescription' =>
      string(8) "metaTest"
      'cmsHeadline' =>
      string(12) "Aschenbecher"
      'cmsText' =>
      string(0) ""
      'active' =>
      bool(true)
      'template' =>
      NULL
      'productBoxLayout' =>
      NULL
      'blog' =>
      bool(false)
      'path' =>
      string(3) "|3|"
      'showFilterGroups' =>
      bool(true)
      'external' =>
      NULL
      'hideFilter' =>
      bool(false)
      'hideTop' =>
      bool(false)
      'noViewSelect' =>
      bool(true)
      'changed' =>
      string(24) "2016-01-22T04:31:02+0100"
      'added' =>
      string(24) "2016-01-22T04:31:02+0100"
      'mediaId' =>
      NULL
      'attribute' =>
      NULL
      'emotions' =>
      array(0) {
        ...
      }
      'media' =>
      NULL
      'customerGroups' =>
      array(0) {
        ...
      }
    }
    'childrenCount' =>
    string(1) "4"
    'articleCount' =>
    string(3) "305"
  }
  'success' =>
  bool(true)

EDIT:

 $categoryData = array( "parent" =\> (int)$parent, "name" =\> $category['name'], "metaDescription" =\> "metaTest", "metaKeywords" =\> "keywordTest", "cmsHeadline" =\> $category['name'], "cmsText" =\> $category['html'], "active" =\> $category['status'], "noViewSelect" =\> true, "hidetop" =\> $hideCatInTopNavi, "media" =\> array('mediaID' =\> 2) );

Auch so wird keine ID eingetragen…

EDIT: :) 

 So klappts, aber wo kann ich den diese Bilder überhaupt anzeigen?

 $categoryData = array(
            "parent" => (int)$parent,
            "name" => $category['name'],
            "metaDescription" => "",
            "metaKeywords" => "",
            "cmsHeadline" => $category['name'],
            "cmsText" => $category['html'],
            "active" => $category['status'],
            "noViewSelect" => true,
            "hidetop" => $hideCatInTopNavi,
            "media" => array('link' => $imageSrc)
        );

 

Zum GET hier mein Ergebnis:

Array
(
    [data] => Array
        (
            [id] => 2585
            [albumId] => -12
            [name] => ' ... '
            [description] => ' ... '
            [path] => ' ... .png'
            [type] => IMAGE
            [extension] => png
            [userId] => 0
            [created] => 2016-01-28T00:00:00+0100
            [fileSize] => 161876
            [width] => 640
            [height] => 480
        )

    [success] => 1
)

Das mit dem link funktioniert ebenfalls nicht. Ich vermute fast, dass das an der Shopware Version liegt/ bzw. der Fehler vielleicht etwas mit dem Update der Medienstruktur zu tun hat und dem Abspeichern der Bilder in vielen kleinen Unterordnern.

Meine Shopware Version ist übrigens: 5.1.1

Die Bilder sollen mit Kategorien verknüpft werden. Diese Kategorien ersetzen dann die Shopware eigenen Herstellerseiten, die sehr rudimentär gehalten und via REST nicht ohne eigenes Plugin ansteuerbar sind. So werden auch weitere Vorteile der Kategorien wie SEO URLs und Sidebarmenu genutzt. Einige Template Anpassungen sind dafür nötig.