Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
CartMergedEvent example
$errors
=
$customerCart
->
getErrors
(
)
;
$customerCart
->
setErrors
(
new
ErrorCollection
(
)
)
;
$customerCartClone
=
clone
$customerCart
;
$customerCart
->
setErrors
(
$errors
)
;
$customerCartClone
->
setErrors
(
$errors
)
;
$mergedCart
=
$this
->cartService->
add
(
$customerCart
,
$mergeableLineItems
->
getElements
(
)
,
$customerContext
)
;
$this
->eventDispatcher->
dispatch
(
new
CartMergedEvent
(
$mergedCart
,
$customerContext
,
$customerCartClone
)
)
;
return
$mergedCart
;
}
private
function
replaceContextToken
(
?string
$customerId
, SalesChannelContext
$currentContext
, ?string
$newToken
= null
)
: SalesChannelContext
{
$originalToken
=
$newToken
;
if
(
$newToken
=== null
)
{
$newToken
=
$this
->contextPersister->
replace
(
$currentContext
->
getToken
(
)
,
$currentContext
)
;
}
$productLineItem1
=
new
LineItem
(
$productId1
, LineItem::PRODUCT_LINE_ITEM_TYPE,
$productId1
)
;
$productLineItem2
=
new
LineItem
(
$productId2
, LineItem::PRODUCT_LINE_ITEM_TYPE,
$productId2
)
;
$productLineItem1
->
setStackable
(
true
)
;
$productLineItem2
->
setStackable
(
true
)
;
$productLineItem1
->
setQuantity
(
1
)
;
$guestProductQuantity
= 5;
$productLineItem2
->
setQuantity
(
$guestProductQuantity
)
;
$previousCart
->
addLineItems
(
new
LineItemCollection
(
[
$productLineItem1
,
$productLineItem2
]
)
)
;
$previousCart
->
markUnmodified
(
)
;
$cartMergedEvent
=
new
CartMergedEvent
(
new
Cart
(
'customerToken'
)
,
$currentContext
,
$previousCart
)
;
$subscriber
->
addCartMergedNoticeFlash
(
$cartMergedEvent
)
;
static
::
assertNotEmpty
(
$infoFlash
=
$session
->
getFlashBag
(
)
->
get
(
'info'
)
)
;
static
::
assertEquals
(
'checkout.cart-merged-hint',
$infoFlash
[
0
]
)
;
}
/** * @param array<string, mixed> $salesChannelData */