ich entwickle gerade ein Plug-in, das die Versandkosten anhand der Entfernung berechnen kann. Wenn ich das Plug-in installiere, möchte ich eine benutzerdefinierte Versandmethode im Backend hinzufügen.
Was kann ich tun, um dies zu erreichen? Für jede Hilfe wäre ich Ihnen sehr dankbar.
Vielen Dank für Ihre Hilfe. Ich konnte die Versandmethode erfolgreich zur Plugin-Installation hinzufügen. Damit die neue Versandart jedoch im Schaufenster sichtbar ist, muss sie auch zu den Verkaufskanälen hinzugefügt werden, ist das richtig?
Gibt es eine Möglichkeit, dies durch Programmierung zu erreichen? Ich habe versucht, ein Stück Code zu implementieren, aber es führte zu einem Fehler, der ausgelöst wurde.
public function assignNewShippingMethodToSalesChannels(): void
{
$context = Context::createDefaultContext();
// Get the new shipping method entity by its ID
$newShippingMethod = $this->shippingMethodRepository->search(
(new Criteria([self::SHIPPING_METHOD_ID])),
$context
)->first();
if (!$newShippingMethod) {
return;
}
$newShippingMethod->setName(self::SHIPPING_METHOD_NAME);
$newShippingMethod->setAvailabilityRuleId(self::AVAILABILITY_RULE_ID);
$newShippingMethod->setDeliveryTimeId(self::DELIVERY_TIME_ID);
// Fetch all sales channels
$criteria = new Criteria();
$criteria->addAssociation('shippingMethods');
$salesChannels = $this->salesChannelRepository->search($criteria, $context)->getEntities();
// Prepare the data for updating sales channels
$salesChannelData = [];
foreach ($salesChannels as $salesChannel) {
$shippingMethods = $salesChannel->getShippingMethods();
$shippingMethods->add($newShippingMethod);
$salesChannelData[] = [
'id' => $salesChannel->getId(),
'shippingMethods' => $shippingMethods,
];
}
// Update the sales channels
$this->salesChannelRepository->update($salesChannelData, $context);
}
[Shopware\Core\Framework\DataAbstractionLayer\Write\WriteException]
There are 2 error(s) while writing data.
Wenn du nicht einmal 2 Minuten in die Stellung deiner Frage (in der richtigen Sprache) investieren kannst, dann erwarte nicht, dass andere auch nur 2 Sekunden Zeit in die Beantwortung deiner Frage investieren. Es gibt ein deutsches und ein englisches Forum. Thema geschlossen.
Danke für das nachträgliche übersetzen deines Beitrags.
Auf die Schnelle sieht dein Code Teilausschnitt eigentlich korrekt aus.
Das ist ein Beispiel, wie das JSON/Array aussehen müsste, wenn du per API lediglich EINEN (api/sales-channel/c644b9189a87488c81716f69924baf38) SalesChannel editierst:
Vielen Dank für Ihre Antwort. Ich habe einige Änderungen an $salesChannelData vorgenommen, indem ich die IDs als Array an den"shippingMethods"-Schlüssel übergeben habe, wie Sie empfohlen haben, und zwar in diesem Format: [ "id" : "9f98fd72ec334b25835fbdf7037a8ab5"]. Diese Änderung war erfolgreich, und ich danke Ihnen für Ihre Hilfe.