Guten Morgen zusammen,
für unser eigenes Theme bin ich derzeit mit dem Merkzettel im User-Bereich beschäftigt.
Da wir sehr unterschiedliche Designs für diverse Artikel-Listen haben, habe ich die lists aufgeteilt und bin gerade an der Umsetzung des Merkzettels (noticelist).
Für den Form-Request zur Entfernung vorhandener Artikel habe ich etwas in den Azure-Templates gespickt, die ja leider recht abstrakt sind, da ein generisches Listen-Widget genutzt wird.
Leider funktioniert mein nachfolgender Request noch nicht und ich kann den Fehler nicht ausfindig machen.
<form action="[{oxgetseourl ident=$oViewConf->getSslSelfLink()|cat:'cl=account§ion=noticelist'}]" method="post">
<ul class="list-unstyled">
[{$oViewConf->getHiddenSid()}]
<input type="hidden" name="cl" value="basket">
<input type="hidden" name="fnc" value="tonoticelist">
<input type="hidden" name="CustomError" value="basket">
[{foreach from=$aNoticelistItems key='iBasketIndex' item='oBasketItem'}]
[{assign var='oArticle' value='OxidEsales\Eshop\Application\Model\Article'|@oxNew}]
[{assign var='blLoaded' value=$oArticle->load($oBasketItem->oxuserbasketitems__oxartid->value)}]
[{if $blLoaded}]
<li class="row noticelist-item mb-3 list-unstyled">
[{* ...gekürzt zur besseren Übersicht... *}]
<div class="d-flex mt-2 flex-shrink-1" style="margin-left:var(--noticelist-image-width)">
[{* Artikel von Merkzettel entfernen *}]
<div class="col-auto">
[{block name='userarea_noticelist_item_remove'}]
<input type="hidden" name="aproducts[[{$iBasketIndex}]][aid]" value="[{$oBasketItem->oxuserbasketitems__oxartid->value}]">
<input type="hidden" name="aproducts[[{$iBasketIndex}]][basketitemid]" value="[{$iBasketIndex}]">
<input type="hidden" name="aproducts[[{$iBasketIndex}]][override]" value="1">
<input type="hidden" name="aproducts[[{$iBasketIndex}]][am]" value="0">
<button class="btn fc_red" type="submit" name="updateBtn" title="[{oxmultilang ident='REMOVE'}]">
<i class="kcs-glyphs kcs-trash bg_red fc_white"></i>
</button>
<span class="align-middle text-uppercase fst-italic small">[{oxmultilang ident='REMOVE'}]</span>
[{/block}]
</div>
</div>
</li>
[{/if}]
[{/foreach}]
</ul>
</form>
Was mich auch etwas irritiert, ist, dass ich oArticle manuell via oxNew erzeugen muss, da
[{assign var='oArticle' value=oBasketItem->getArticle()}]
fehlschlägt, während es im regulären Basket (Warenkorb) funktioniert. Die Funktion an sich ist für oBasketItem jedoch existent. Das aber nur am Rande.
Erkennt jemand, wo das Problem im Request liegt?
Vorab herzlichen Dank und beste Grüße
// Edit:
Das mit dem Artikel-Objekt hat sich schonmal geklärt. Ich hatte nicht erwartet, dass ich nocheinmal die BasketItem-ID als Parameter mitgeben muss, aber die Doku ist da eindeutig. Folgendes funktioniert:
$oBasketItem->getArticle($oBasketItem->getId())
Das primäre Problem mit dem Request konnte ich dennoch noch nicht auflösen.
Da ich nach dem Request trotz meiner abweichenden Target-Angabe zum Warenkorb weitergeleitet werden, vermute ich, es fehlt eine Angabe zur korrekten Remove-Funktion, daher vermute ich, dass der Hase bei “fnc=tonoticelist” begraben liegt.