Kategorie erstellen über RESTAPI nicht möglich

Hallo Shopware, ich muss es jetzt nochmal zur Sprache bringen. Ich habe gerade einen Shop neu aufgesetzt und wollte diesen mit Kategorien befüllen. Nun bekomme ich aber immer " A name is required" als Fehlermeldung. Mein Array was ich per POST an die API sende: ($client->post(‚categories‘, $cat_change):wink: $cat\_change = array( [id] =\> 0006 [name] =\> Blog [position] =\> 2965 [parentId] =\> 0004 [childrenCount] =\> 3 ) Soweit ich lesen kann, habe ich den Wert „name“ im Array. Trotzdem bekomme ich diese Meldung. Das geile. In einem anderen Shop bekomme ich die Meldung gelegentlich auch, allerdings legt er die Kategorie trotzdem an. Nur halt bei diesem nicht. Wenn ich mir nen print_r in der Klasse für die API Category setze, ist der $parms Wert komplett leer. Sprich es kommt nicht mal dort an. Und da ich nicht mal eben nen 20GB System auf den Debug Server verschieben kann, brauch ich hier Rat.

Hallo! Aus Performance-Gründen und weil es unter Umständen Probleme machen könnte, sollte man nicht-numerische Keys in einem Array stehts mit einfachen oder doppelten Anführungszeichen schreiben. Ohne Gewähr - könnte es also sein dass die Konfiguration des Servers die von dir abgebildete Schreibweise nicht ‘versteht’?

Verwunderlich ist nur, im „Test“ System hatte ich keine Probleme. Auf dem selben Server, selbe Config, nur mit Subdomain „new.***.de“

Wie gesagt, das könnte ein möglicher Grund sein. Wenn das nichts ändert bin ich vorerst auch überfragt da ich gerade im Moment nicht in den Code sehen kann.

Hi Kadis, überprüf mal ob die Shopware Versionen in beiden System übereinstimmen aber wahrscheinlicher ist das du einen Fall hast in dem der Name tatsächlich leer ist. In der Schleife in der Du die Kategorien importierst am Besten prüfen ob in allen Fällen der Name der Kategorie gesetzt wird.

Hy, der Name ist definitiv nicht leer. Da diese garnicht erst an die Schnittstelle gesendet werden. Also ich kann das immer noch nicht nachvollziehen. Es scheint irgendwie per Random vorzukommen. Bei dem Shop am 06.11 funktionierte der selbe Aufruf einen Tag später am 07.11 wunderbar. Am Script oder den Kategorie Daten wurde nichts geändert. Jetzt läuft der Shop seit dem wunderbar. Es sind keine Fehler mehr aufgekommen. Heute habe ich den Fall in einem anderen Shop. Auf einem anderen Server, selbe Konfiguration. Wieder die tolle Fehlermeldung „A name is required“ und hing somit in einer Schleife fest. Da mein Script versucht die Kategoriedaten zu aktualisieren, bevor die Artikel mit den Kategorie IDs kommen. Da man hier ja nur die Artikel anhand der ID an die Kategorie bringen kann. Bis gestern lief das Script wunderbar. Monate lang. Und nun wieder das. Wahrscheinlich funktioniert es morgen wieder. Aber es muss doch einen Grund geben, warum das überhaupt vorkommt. Irgendwo muss er ja die Informationen die ich da an die Schnittstelle gebe verlieren. Beste Grüße,

Mein Array: $cat\_change = array( [id] =\> 6 [name] =\> Reißverschlüsse [position] =\> 4008 [parentId] =\> 3 [childrenCount] =\> 3 ) Mein Aufruf: $client->put(‚categories/‘.$cat_change[‚id‘], $cat_change) Der Fehler: [2014-12-09 09:31:00] core.ERROR: exception 'Shopware\Components\Api\Exception\CustomValidationException' with message 'A name is required' in /var/www/vhosts/\*\*\*\*\*.de/httpdocs/engine/Shopware/Components/Api/Resource/Category.php:201 Stack trace: #0 /var/www/vhosts/\*\*\*\*\*.de/httpdocs/engine/Shopware/Components/Api/Resource/Category.php(158): Shopware\Components\Api\Resource\Category-\>prepareCategoryData(Array, Object(Shopware\Models\Category\Category)) #1 /var/www/vhosts/\*\*\*\*\*.de/httpdocs/engine/Shopware/Controllers/Api/Categories.php(99): Shopware\Components\Api\Resource\Category-\>update('6', Array) #2 /var/www/vhosts/\*\*\*\*\*.de/httpdocs/engine/Library/Enlight/Controller/Action.php(159): Shopware\_Controllers\_Api\_Categories-\>putAction() #3 /var/www/vhosts/\*\*\*\*\*.de/httpdocs/engine/Library/Enlight/Controller/Dispatcher/Default.php(528): Enlight\_Controller\_Action-\>dispatch('putAction') #4 /var/www/vhosts/\*\*\*\*\*.de/httpdocs/engine/Library/Enlight/Controller/Front.php(228): Enlight\_Controller\_Dispatcher\_Default-\>dispatch(Object(Enlight\_Controller\_Request\_RequestHttp), Object(Enlight\_Controller\_Response\_ResponseHttp)) #5 /var/www/vhosts/\*\*\*\*\*.de/httpdocs/engine/Shopware/Kernel.php(141): Enlight\_Controller\_Front-\>dispatch() #6 /var/www/vhosts/\*\*\*\*\*.de/httpdocs/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php(472): Shopware\Kernel-\>handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #7 /var/www/vhosts/\*\*\*\*\*.de/httpdocs/engine/Shopware/Components/HttpCache/AppCache.php(256): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL) #8 /var/www/vhosts/\*\*\*\*\*.de/httpdocs/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php(243): Shopware\Components\HttpCache\AppCache-\>forward(Object(Symfony\Component\HttpFoundation\Request), true) #9 /var/www/vhosts/\*\*\*\*\*.de/httpdocs/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php(260): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>pass(Object(Symfony\Component\HttpFoundation\Request), true) #10 /var/www/vhosts/\*\*\*\*\*.de/httpdocs/engine/Shopware/Components/HttpCache/AppCache.php(132): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>invalidate(Object(Symfony\Component\HttpFoundation\Request), true) #11 /var/www/vhosts/\*\*\*\*\*.de/httpdocs/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php(189): Shopware\Components\HttpCache\AppCache-\>invalidate(Object(Symfony\Component\HttpFoundation\Request), true) #12 /var/www/vhosts/\*\*\*\*\*.de/httpdocs/engine/Shopware/Components/HttpCache/AppCache.php(113): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #13 /var/www/vhosts/\*\*\*\*\*.de/httpdocs/shopware.php(109): Shopware\Components\HttpCache\AppCache-\>handle(Object(Symfony\Component\HttpFoundation\Request)) #14 {main} [] {"uid":"\*\*\*\*\*"}

Also so langsam glaube ich das es ein Shopware Problem ist. Ich habe nun ein Backup eingespielt wo der Fehler nicht vorkam. Alles wunderbar. Das Backup System, in dem seit dem nichts geändert wurde, klappt alles weiterhin wunderbar. In Live System hat der Betreiber nun im Backend weiter gearbeitet, was er ja auch muss und soll. Und schwups bekommen wir wieder den Fehler „A name is required“ und es nicht mehr möglich Kategorien über die API zu pflegen. Was vom Betreiber laut Logfiles geändert wurde ist z.b. eine Einkaufswelt wurde bearbeitet und gespeichert (Startseite, Deutsch) und Kunden wurden gelöscht. Da Kunden nichts mit den Kategorien zu tun haben, schließe ich nun mal auf die Einkaufswelten, das hier etwas krum in die Datenbank geschrieben wird, was die API nicht ab kann.

Hallo,

alle Jahre wieder das Problem, wenn eine neue Shopware Version raus kommt.
Wir haben gestern ein Update von 5.2.27 auf 5.3.5 gemacht, und nun bekommen wir wieder die Meldung der Shopware API das der Name fehlt.

A name is required

Ich habe nun festgestellt, das seit dem Update beim Shop keine POST Daten mehr ankommen.
Das $_POST ist leer in der vendor/symfony/http-fundation/Request.php.

ich habe nun mal in php://input geschaut ob die Daten vielleicht dort sind und wurde fündig.

Senden mache ich mit

$data = Array
(
    [id] => 512
    [active] => 1
    [name] => Nähzubehör & Garne
    [position] => 7
    [parentId] => 3
    [mediaId] => 0
    [childrenCount] => 4
    [key] => 7
)

$dataString = json_encode($data);
curl_setopt($this->cURL, CURLOPT_POSTFIELDS, $dataString);

Mit

$rest_json = file_get_contents("php://input");
$test = json_decode($rest_json, true);

komme ich an die gesendeten Daten. Nun das Problem, da ich ja die Request.php nicht anpassen kann, da dies ja eine Core änderung wäre, wie kann ich das Problem lösen?
Ist hier ggf. eine PHP Einstellung falsch, die nicht zu SW5.3 passt?

 

Was ich an der Stelle interessant finde, wir haben eine Shop, den wir komplett neu aufgesetzt haben, mit 5.3.5.
Gleiche Serverumgebung, gleiche Einstellungen. Aber hier klappt das mit der API. Hier gibt es keine Fehlermeldung.

Hallo,

ich habe aktuell das selbe Problem.

Poste die Daten mit Namen, aber bekomme die Fehlermeldung

{
  "success": false,
  "message": "A name is required"
}

Produkte erstellen funktioniert wunderbar, aber das mit den Kategorien haut nicht hin. Der Fehler tritt bei mir in Shopware 5.3.7 auf, aber bei der vorherigen Version (weiß ich leider nicht mehr) auch.

Wäre super, wenn man hierzu eine Antwort bekäme.

 

 

Habt ihr schon eine Lösung gefunden? 

Hallo,

Benutzen Sie Utf8_encode beim Kategorie name.

Dann probiere nochmal. 

 

Diese ist nur Hinweis ich habe es nicht getest. 

 

Vg,

Ahmad