Cart Manipulation script services reference
services.cart (Shopware\Core\Checkout\Cart\Facade\CartFacade)
The cart service allows you to manipulate the cart. You can use the cart service to add line-items, change prices, add discounts, etc. to the cart.
items()
The
items()method returns all line-items of the current cart for further manipulation.Returns
Shopware\Core\Checkout\Cart\Facade\ItemsFacadeA
ItemsFacadecontaining all line-items in the current cart as a collection.
products()
The
product()method returns all products of the current cart for further manipulation.Similar to the
items()method, but the line-items are filtered, to only contain product line items.Returns
Shopware\Core\Checkout\Cart\Facade\ProductsFacadeA
ProductsFacadecontaining all product line-items in the current cart as a collection.
calculate()
The
calculate()method recalculates the whole cart.Use this to get the correct prices after you made changes to the cart. Note that after calling the
calculate()all collections (e.g. items(), products()) get new references, so if you still hold references to things inside the cart, these are outdated after callingcalculate().The
calculate()method will be called automatically after your cart script executed.
price()
The
price()method returns the current price of the cart.Note that this price may be outdated, if you changed something inside the cart in your script. Use the
calculate()method to recalculate the cart and update the price.Returns
Shopware\Core\Checkout\Cart\Facade\CartPriceFacadeThe calculated price of the cart.
errors()
The
errors()method returns the current errors of the cart.You can use it to add new errors or warning or to remove existing ones.
Returns
Shopware\Core\Checkout\Cart\Facade\ErrorsFacadeA
ErrorsFacadecontaining all cart errors as a collection (may be an empty collection if there are no errors).
states()
states()allows you to access the state functions of the current cart.Returns
Shopware\Core\Checkout\Cart\Facade\StatesFacadeA
StatesFacadecontaining all cart states as a collection (maybe an empty collection if there are no states).
discount()
The
discount()methods creates a new discount line-item with the given type and value.Returns
Shopware\Core\Checkout\Cart\Facade\DiscountFacadeReturns the newly created discount line-item.
Arguments:
stringkey: The id for the new discount.stringtype: The type of the discount, e.g.percentage,absolutefloat|\PriceCollectionvalue: The value of the discount, a float for percentage discounts or aPriceCollectionfor absolute discounts.stringlabel: The label of the discount line-item.
Examples:
Add an absolute discount to the cart.
twig{# @var services \Shopware\Core\Framework\Script\ServiceStubs #} {% do services.cart.products.add(hook.ids.get('p1')) %} {% if services.cart.items.count <= 0 %} {% return %} {% endif %} {% if services.cart.items.has('my-discount') %} {% return %} {% endif %} {% set price = services.cart.price.create({ 'default': { 'gross': -19.99, 'net': -19.99} }) %} {% do services.cart.discount('my-discount', 'absolute', price, 'Fancy discount') %}Add a relative discount to the cart.
twig{# @var services \Shopware\Core\Framework\Script\ServiceStubs #} {% do services.cart.products.add(hook.ids.get('p1')) %} {% if services.cart.has('my-discount') %} {% return %} {% endif %} {% do services.cart.discount('my-discount', 'percentage', -10, 'Fancy discount') %}
count()
count()returns the count of line-items in this collection.Note that it does only count the line-items directly in this collection and not child line-items of those.
Returns
intThe number of line-items in this collection.
get()
get()returns the line-item with the given id from this collection.Returns
Shopware\Core\Checkout\Cart\Facade\ItemFacade|nullThe line-item with the given id, or null if it does not exist.
Arguments:
stringid: The id of the line-item that should be returned.
has()
has()checks if a line-item with the given id exists in this collection.Returns
boolReturns true if the given line-item or a line-item with the given id already exists in the collection, false otherwise.
Arguments:
string|\ItemFacadeid: The id or a line-item that should be checked if it already exists in the collection.
remove()
remove()removes the given line-item or the line-item with the given id from this collection.Arguments:
string|\ItemFacadeid: The id of the line-item or the line-item that should be removed.
Examples:
Add and then remove a product line-item from the cart.
twig{% do services.cart.products.add(hook.ids.get('p1')) %} {% do services.cart.products.remove(hook.ids.get('p1')) %}
surcharge()
The
surcharge()methods creates a new surcharge line-item with the given type and value.Returns
Shopware\Core\Checkout\Cart\Facade\DiscountFacadeReturns the newly created surcharge line-item.
Arguments:
stringkey: The id for the new surcharge.stringtype: The type of the surcharge, e.g.percentage,absolutefloat|\PriceCollectionvalue: The value of the surcharge, a float for percentage surcharges or aPriceCollectionfor absolute surcharges.stringlabel: The label of the surcharge line-item.
Examples:
Add an absolute surcharge to the cart.#
twig{# @var services \Shopware\Core\Framework\Script\ServiceStubs #} {% do services.cart.products.add(hook.ids.get('p1')) %} {% set price = services.cart.price.create({ 'default': { 'gross': 19.99, 'net': 19.99} }) %} {% do services.cart.surcharge('my-surcharge', 'absolute', price, 'Fancy surcharge') %}Add a relative surcharge to the cart.
twig{# @var services \Shopware\Core\Framework\Script\ServiceStubs #} {% do services.cart.products.add(hook.ids.get('p1')) %} {% if services.cart.has('my-surcharge') %} {% return %} {% endif %} {% do services.cart.surcharge('my-surcharge', 'percentage', -10, 'Fancy discount') %}
Shopware\Core\Checkout\Cart\Facade\CartPriceFacade
The CartPriceFacade is a wrapper around the calculated price of a cart.
getNet()
getNet()returns the net price of the cart.Returns
floatReturns the net price of the cart as float.
getTotal()
getTotal()returns the total price of the cart that has to be paid by the customer.Depending on the tax settings this may be the gross or net price. Note that this price is already rounded, to get the raw price before rounding use
getRaw().Returns
floatThe rounded total price of the cart as float.
getPosition()
getPosition()returns the sum price of all line-items in the cart.In the position price the shipping costs are excluded. Depending on the tax settings this may be the gross or net price og the line-items.
Returns
floatThe position price as float.
getRounded()
Alias for
getTotal().Returns
floatThe rounded total price of the cart as float.
getRaw()
`getRaw() returns the total price of the cart before rounding.
Returns
floatThe total price before rounding as float.
create()
create()creates a newPriceCollectionbased on an array of prices.Returns
Shopware\Core\Framework\DataAbstractionLayer\Pricing\PriceCollectionReturns the newly created
PriceCollection.Arguments:
arrayprice: The prices for the new collection, indexed by the currency-id or iso-code of the currency.
Examples:
Create a new Price in the default currency.
twig{% set price = services.cart.price.create({ 'default': { 'gross': 19.99, 'net': 19.99} }) %}
Shopware\Core\Checkout\Cart\Facade\ContainerFacade
The ContainerFacade allows you to wrap multiple line-items inside a container line-item.
products()
The
product()method returns all products inside the current container for further manipulation.Similar to the
children()method, but the line-items are filtered, to only contain product line items.Returns
Shopware\Core\Checkout\Cart\Facade\ProductsFacadeA
ProductsFacadecontaining all product line-items inside the current container as a collection.
add()
Use the
add()method to add an item to this container.Returns
Shopware\Core\Checkout\Cart\Facade\ItemFacadeThe item that was added to the container.
Arguments:
Shopware\Core\Checkout\Cart\Facade\ItemFacadeitem: The item that should be added.
Examples:
Add a product to the container and reduce the quantity of the original line-item.
twig
getPrice()
getPrice()returns the calculated price of the line-item.Returns
Shopware\Core\Checkout\Cart\Facade\PriceFacade|nullReturns the price of the line-item as a
PriceFacadeor null if the line-item has no calculated price.
take()
take()splits an existing line-item by a given quantity.It removes the given quantity from the existing line-item and returns a new line-item with exactly that quantity.
Returns
Shopware\Core\Checkout\Cart\Facade\ItemFacade|nullReturns the new line-item as an
ItemFacadeor null if taking is not possible because the line-item has no sufficient quantity.Arguments:
intquantity: The quantity that should be taken.string|nullkey: Optional: The id of the new line-item. A random UUID will be used if none is provided.Default:
null
Examples:
Take a quantity of 2 from an existing product line-item and add it to the cart again.
twig{# @var services \Shopware\Core\Framework\Script\ServiceStubs #} {% do services.cart.products.add(hook.ids.get('p1'), 5) %} {% set product = services.cart.products.get(hook.ids.get('p1')) %} {% set split = product.take(2, 'new-key') %} {% do services.cart.products.add(split) %}
getId()
getId()returns the id of the line-item.Returns
stringReturns the id.
getReferencedId()
getReferenceId()returns the id of the referenced entity of the line-item.E.g. for product line-items this will return the id of the referenced product.
Returns
string|nullReturns the id of the referenced entity, or null if no entity is referenced.
getQuantity()
getQuantity()returns the quantity of the line-item.Returns
intReturns the quantity.
getLabel()
getLabel()returns the translated label of the line-item.Returns
string|nullReturns the translated label, or null if none exists.
getPayload()
getPayload()returns the payload of this line-item.Returns
Shopware\Core\Framework\Script\Facade\ArrayFacadeReturns the payload as
ArrayFacade.
getChildren()
getChildren()returns the child line-items of this line-item.Returns
Shopware\Core\Checkout\Cart\Facade\ItemsFacadeReturns the children as a
ItemsFacade, that may be empty if no children exist.
getType()
getType()returns the type of this line-item.Possible types include
product,discount,container, etc.Returns
stringThe type of the line-item.
discount()
The
discount()methods creates a new discount line-item with the given type and value.Returns
Shopware\Core\Checkout\Cart\Facade\DiscountFacadeReturns the newly created discount line-item.
Arguments:
stringkey: The id for the new discount.stringtype: The type of the discount, e.g.percentage,absolutefloat|\PriceCollectionvalue: The value of the discount, a float for percentage discounts or aPriceCollectionfor absolute discounts.stringlabel: The label of the discount line-item.
Examples:
Add an absolute discount to the cart.
twig{# @var services \Shopware\Core\Framework\Script\ServiceStubs #} {% do services.cart.products.add(hook.ids.get('p1')) %} {% if services.cart.items.count <= 0 %} {% return %} {% endif %} {% if services.cart.items.has('my-discount') %} {% return %} {% endif %} {% set price = services.cart.price.create({ 'default': { 'gross': -19.99, 'net': -19.99} }) %} {% do services.cart.discount('my-discount', 'absolute', price, 'Fancy discount') %}Add a relative discount to the cart.
twig{# @var services \Shopware\Core\Framework\Script\ServiceStubs #} {% do services.cart.products.add(hook.ids.get('p1')) %} {% if services.cart.has('my-discount') %} {% return %} {% endif %} {% do services.cart.discount('my-discount', 'percentage', -10, 'Fancy discount') %}
count()
count()returns the count of line-items in this collection.Note that it does only count the line-items directly in this collection and not child line-items of those.
Returns
intThe number of line-items in this collection.
get()
get()returns the line-item with the given id from this collection.Returns
Shopware\Core\Checkout\Cart\Facade\ItemFacade|nullThe line-item with the given id, or null if it does not exist.
Arguments:
stringid: The id of the line-item that should be returned.
has()
has()checks if a line-item with the given id exists in this collection.Returns
boolReturns true if the given line-item or a line-item with the given id already exists in the collection, false otherwise.
Arguments:
string|\ItemFacadeid: The id or a line-item that should be checked if it already exists in the collection.
remove()
remove()removes the given line-item or the line-item with the given id from this collection.Arguments:
string|\ItemFacadeid: The id of the line-item or the line-item that should be removed.
Examples:
Add and then remove a product line-item from the cart.
twig{% do services.cart.products.add(hook.ids.get('p1')) %} {% do services.cart.products.remove(hook.ids.get('p1')) %}
surcharge()
The
surcharge()methods creates a new surcharge line-item with the given type and value.Returns
Shopware\Core\Checkout\Cart\Facade\DiscountFacadeReturns the newly created surcharge line-item.
Arguments:
stringkey: The id for the new surcharge.stringtype: The type of the surcharge, e.g.percentage,absolutefloat|\PriceCollectionvalue: The value of the surcharge, a float for percentage surcharges or aPriceCollectionfor absolute surcharges.stringlabel: The label of the surcharge line-item.
Examples:
Add an absolute surcharge to the cart.#
twig{# @var services \Shopware\Core\Framework\Script\ServiceStubs #} {% do services.cart.products.add(hook.ids.get('p1')) %} {% set price = services.cart.price.create({ 'default': { 'gross': 19.99, 'net': 19.99} }) %} {% do services.cart.surcharge('my-surcharge', 'absolute', price, 'Fancy surcharge') %}Add a relative surcharge to the cart.
twig{# @var services \Shopware\Core\Framework\Script\ServiceStubs #} {% do services.cart.products.add(hook.ids.get('p1')) %} {% if services.cart.has('my-surcharge') %} {% return %} {% endif %} {% do services.cart.surcharge('my-surcharge', 'percentage', -10, 'Fancy discount') %}
Shopware\Core\Checkout\Cart\Facade\DiscountFacade
The DiscountFacade is a wrapper around a newly created discount. Note that this wrapper is independent from the line-item that was added for this discount.
getId()
getId()returns the id of the line-item that was added with this discount.Returns
stringThe id of the discount line-item.
getLabel()
getLabel()returns the translated label of the line-item that was added with this discount.Returns
string|nullThe translated label of the discount line-item.
Shopware\Core\Checkout\Cart\Facade\ErrorsFacade
The ErrorsFacade is a wrapper around the errors of a cart. You can use it to add new errors to the cart or remove existing ones.
error()
The
error()method adds a new error of typeerrorto the cart.The error will be displayed to the user and the checkout will be blocked if at least one error was added.
Arguments:
stringkey: The snippet-key of the message that should be displayed to the user.string|nullid: An optional id that can be used to reference the error, if none is provided the $key will be used as id.Default:
nullarrayparameters: Optional: Any parameters that the snippet for the error message may need.Default:
array ( )
Examples:
Add a error to the cart.
twig{% do services.cart.errors.error('NO_PRODUCTS_IN_CART') %}
warning()
The
warning()method adds a new error of typewarningto the cart.The warning will be displayed to the user, but the checkout won't be blocked.
Arguments:
stringkey: The snippet-key of the message that should be displayed to the user.string|nullid: An optional id that can be used to reference the error, if none is provided the $key will be used as id.Default:
nullarrayparameters: Optional: Any parameters that the snippet for the error message may need.Default:
array ( )
Examples:
Add a warning to the cart.
twig{% do services.cart.errors.notice('YOU_SHOULD_REALLY_ADD_PRODUCTS') %}
notice()
The
notice()method adds a new error of typenoticeto the cart.The notice will be displayed to the user, but the checkout won't be blocked.
Arguments:
stringkey: The snippet-key of the message that should be displayed to the user.string|nullid: An optional id that can be used to reference the error, if none is provided the $key will be used as id.Default:
nullarrayparameters: Optional: Any parameters that the snippet for the error message may need.Default:
array ( )
Examples:
Add a notice to the cart.
twig{% do services.cart.errors.warning('ADD_PRODUCTS_OR_GO_AWAY') %}Add a notice to the cart with a custom id.
twig{% do services.cart.errors.notice('YOU_SHOULD_REALLY_ADD_PRODUCTS', 'add-same-message') %}Add a notice to the cart with parameters.
twig{% do services.cart.errors.notice('MESSAGE_WITH_PARAMETERS', null, {'foo': 'bar'}) %}
resubmittable()
The
resubmittable()method adds a new error of typeerrorto the cart.The notice will be displayed to the user, the order will be blocked, but the user can submit the order again.
Arguments:
stringkey: The snippet-key of the message that should be displayed to the user.string|nullid: An optional id that can be used to reference the error, if none is provided the $key will be used as id.Default:
nullarrayparameters: Optional: Any parameters that the snippet for the error message may need.Default:
array ( )
has()
The
has()method, checks if an error with a given id exists.Returns
boolReturns true if an error with that key exists, false otherwise.
Arguments:
stringid: The id of the error that should be checked.
remove()
The
remove()method removes the error with the given id.Arguments:
stringid: The id of the error that should be removed.
get()
The
get()method returns the error with the given id.Returns
Shopware\Core\Checkout\Cart\Error\Error|nullThe Error with the given id, null if an error with that id does not exist.
Arguments:
stringid: The id of the error that should be returned.
Shopware\Core\Checkout\Cart\Facade\ItemFacade
The ItemFacade is a wrapper around one line-item.
getPrice()
getPrice()returns the calculated price of the line-item.Returns
Shopware\Core\Checkout\Cart\Facade\PriceFacade|nullReturns the price of the line-item as a
PriceFacadeor null if the line-item has no calculated price.
take()
take()splits an existing line-item by a given quantity.It removes the given quantity from the existing line-item and returns a new line-item with exactly that quantity.
Returns
Shopware\Core\Checkout\Cart\Facade\ItemFacade|nullReturns the new line-item as an
ItemFacadeor null if taking is not possible because the line-item has no sufficient quantity.Arguments:
intquantity: The quantity that should be taken.string|nullkey: Optional: The id of the new line-item. A random UUID will be used if none is provided.Default:
null
Examples:
Take a quantity of 2 from an existing product line-item and add it to the cart again.
twig{# @var services \Shopware\Core\Framework\Script\ServiceStubs #} {% do services.cart.products.add(hook.ids.get('p1'), 5) %} {% set product = services.cart.products.get(hook.ids.get('p1')) %} {% set split = product.take(2, 'new-key') %} {% do services.cart.products.add(split) %}
getId()
getId()returns the id of the line-item.Returns
stringReturns the id.
getReferencedId()
getReferenceId()returns the id of the referenced entity of the line-item.E.g. for product line-items this will return the id of the referenced product.
Returns
string|nullReturns the id of the referenced entity, or null if no entity is referenced.
getQuantity()
getQuantity()returns the quantity of the line-item.Returns
intReturns the quantity.
getLabel()
getLabel()returns the translated label of the line-item.Returns
string|nullReturns the translated label, or null if none exists.
getPayload()
getPayload()returns the payload of this line-item.Returns
Shopware\Core\Framework\Script\Facade\ArrayFacadeReturns the payload as
ArrayFacade.
getChildren()
getChildren()returns the child line-items of this line-item.Returns
Shopware\Core\Checkout\Cart\Facade\ItemsFacadeReturns the children as a
ItemsFacade, that may be empty if no children exist.
getType()
getType()returns the type of this line-item.Possible types include
product,discount,container, etc.Returns
stringThe type of the line-item.
Shopware\Core\Checkout\Cart\Facade\ItemsFacade
The ItemsFacade is a wrapper around a collection of line-items.
add()
add()adds a line-item to this collection.Returns
Shopware\Core\Checkout\Cart\Facade\ItemFacadeReturns the added line-item.
Arguments:
Shopware\Core\Checkout\Cart\Facade\ItemFacadeitem: The line-item that should be added.
Examples:
Add an absolute discount to the cart.
twig{# @var services \Shopware\Core\Framework\Script\ServiceStubs #} {% do services.cart.products.add(hook.ids.get('p1')) %} {% if services.cart.items.count <= 0 %} {% return %} {% endif %} {% if services.cart.items.has('my-discount') %} {% return %} {% endif %} {% set price = services.cart.price.create({ 'default': { 'gross': -19.99, 'net': -19.99} }) %} {% do services.cart.discount('my-discount', 'absolute', price, 'Fancy discount') %}
get()
get()returns the line-item with the given id from this collection.Returns
Shopware\Core\Checkout\Cart\Facade\ItemFacade|nullThe line-item with the given id, or null if it does not exist.
Arguments:
stringid: The id of the line-item that should be returned.
count()
count()returns the count of line-items in this collection.Note that it does only count the line-items directly in this collection and not child line-items of those.
Returns
intThe number of line-items in this collection.
has()
has()checks if a line-item with the given id exists in this collection.Returns
boolReturns true if the given line-item or a line-item with the given id already exists in the collection, false otherwise.
Arguments:
string|\ItemFacadeid: The id or a line-item that should be checked if it already exists in the collection.
remove()
remove()removes the given line-item or the line-item with the given id from this collection.Arguments:
string|\ItemFacadeid: The id of the line-item or the line-item that should be removed.
Examples:
Add and then remove a product line-item from the cart.
twig{% do services.cart.products.add(hook.ids.get('p1')) %} {% do services.cart.products.remove(hook.ids.get('p1')) %}
Shopware\Core\Checkout\Cart\Facade\PriceFacade
The PriceFacade is a wrapper around a price.
getTotal()
getTotal()returns the total price for the line-item.Returns
floatThe total price as float.
getUnit()
getUnit()returns the unit price for the line-item.This is equivalent to the total price of the line-item with the quantity 1.
Returns
floatThe price per unit as float.
getQuantity()
getQuantity()returns the quantity that was used to calculate the total price.Returns
intReturns the quantity.
getTaxes()
getTaxes()returns the calculated taxes of the price.Returns
Shopware\Core\Checkout\Cart\Tax\Struct\CalculatedTaxCollectionReturns the calculated taxes.
getRules()
getRules()returns the tax rules that were used to calculate the price.Returns
Shopware\Core\Checkout\Cart\Tax\Struct\TaxRuleCollectionReturns the tax rules.
change()
change()allows a price overwrite of the current price scope. The provided price will be recalculated over the quantity price calculator to consider quantity, tax rule and cash rounding configurations.Arguments:
Shopware\Core\Framework\DataAbstractionLayer\Pricing\PriceCollectionprice: The provided price can be a fetched price from the database or generated over thePriceFactorystatically
Examples:
Overwrite prices with a static defined collection
twig{% do product.calculatedPrices.change([ { to: 20, price: services.price.create({ 'default': { 'gross': 15, 'net': 15} }) }, { to: 30, price: services.price.create({ 'default': { 'gross': 10, 'net': 10} }) }, { to: null, price: services.price.create({ 'default': { 'gross': 5, 'net': 5} }) }, ]) %}
plus()
plus()allows a price addition of the current price scope. The provided price will be recalculated via the quantity price calculator.The provided price is interpreted as a unit price and will be added to the current unit price. The total price is calculated afterwards considering quantity, tax rule and cash rounding configurations.
Arguments:
Shopware\Core\Framework\DataAbstractionLayer\Pricing\PriceCollectionprice: The provided price can be a fetched price from the database or generated over thePriceFactorystatically
Examples:
Plus a static defined price to the existing calculated price
twig{% set price = services.price.create({ 'default': { 'gross': 1.5, 'net': 1.5} }) %} {% do product.calculatedPrice.plus(price) %}
minus()
minus()allows a price subtraction of the current price scope. The provided price will be recalculated via the quantity price calculator.The provided price is interpreted as a unit price and will reduce to the current unit price. The total price is calculated afterwards considering quantity, tax rule and cash rounding configurations.
Arguments:
Shopware\Core\Framework\DataAbstractionLayer\Pricing\PriceCollectionprice: The provided price can be a fetched price from the database or generated over thePriceFactorystatically
Examples:
Minus a static defined price to the existing calculated price
twig{% set price = services.price.create({ 'default': { 'gross': 1.5, 'net': 1.5} }) %} {% do product.calculatedPrice.minus(price) %}
discount()
discount()allows a percentage discount calculation of the current price scope. The provided value will be ensured to be negative viaabs(value) * -1.The provided discount is interpreted as a percentage value and will be applied to the unit price and the total price as well.
Arguments:
floatvalue: The percentage value of the discount. The value will be ensured to be negative viaabs(value) * -1.
Examples:
Adds a 10% discount to the existing calculated price
twig{% do product.calculatedPrice.discount(10) %}
surcharge()
surcharge()allows a percentage surcharge calculation of the current price scope. The provided value will be ensured to be negative viaabs(value).The provided surcharge is interpreted as a percentage value and will be applied to the unit price and the total price as well.
Arguments:
floatvalue: The percentage value of the surcharge. The value will be ensured to be negative viaabs(value).
Examples:
Adds a 10% surcharge to the existing calculated price
twig{% do product.calculatedPrice.surcharge(10) %}
create()
create()creates a newPriceCollectionbased on an array of prices.Returns
Shopware\Core\Framework\DataAbstractionLayer\Pricing\PriceCollectionReturns the newly created
PriceCollection.Arguments:
arrayprice: The prices for the new collection, indexed by the currency-id or iso-code of the currency.
Examples:
Create a new Price in the default currency.
twig{% set price = services.cart.price.create({ 'default': { 'gross': 19.99, 'net': 19.99} }) %}
services.price (Shopware\Core\Checkout\Cart\Facade\PriceFactory)
The PriceFacade is a wrapper around a price.
create()
create()creates a newPriceCollectionbased on an array of prices.Returns
Shopware\Core\Framework\DataAbstractionLayer\Pricing\PriceCollectionReturns the newly created
PriceCollection.Arguments:
arrayprices: The prices for the new collection, indexed by the currency-id or iso-code of the currency.
Examples:
Create a new Price in the default currency.
twig{% set price = services.cart.price.create({ 'default': { 'gross': 19.99, 'net': 19.99} }) %}
Shopware\Core\Checkout\Cart\Facade\ProductsFacade
The ProductsFacade is a wrapper around a collection of product line-items.
get()
get()returns the product line-item with the given product id.Returns
Shopware\Core\Checkout\Cart\Facade\ItemFacade|nullThe line-item associated with the given product id, or null if it does not exist.
Arguments:
stringproductId: The id of the product, of which the line-item should be returned.
Examples:
Get a product line-item by id.
twig{% set product = services.cart.products.get(hook.ids.get('p1')) %}
add()
add()adds a new product line-item to this collection.In the case only a product id is provided it will create a new line-item from type product for the given product id.
Returns
Shopware\Core\Checkout\Cart\Facade\ItemFacadeThe newly added product line-item.
Arguments:
string|\LineItem|\ItemFacadeproduct: The product that should be added. Either an existingItemFacadeorLineItemor alternatively the id of a product.intquantity: Optionally provide the quantity with which the product line-item should be created, defaults to 1.Default:
1
Examples:
Add a product to the cart by id.
twig{% do services.cart.products.add(hook.ids.get('p1')) %}
create()
create()creates a new product line-item for the product with the given id in the given quantity.Note that the created line-item will not be added automatically to this collection, use
add()for that.Returns
Shopware\Core\Checkout\Cart\Facade\ItemFacadeThe newly created product line-item.
Arguments:
stringproductId: The product id for which a line-item should be created.intquantity: Optionally provide the quantity with which the product line-item should be created, defaults to 1.Default:
1
count()
count()returns the count of line-items in this collection.Note that it does only count the line-items directly in this collection and not child line-items of those.
Returns
intThe number of line-items in this collection.
has()
has()checks if a line-item with the given id exists in this collection.Returns
boolReturns true if the given line-item or a line-item with the given id already exists in the collection, false otherwise.
Arguments:
string|\ItemFacadeid: The id or a line-item that should be checked if it already exists in the collection.
remove()
remove()removes the given line-item or the line-item with the given id from this collection.Arguments:
string|\ItemFacadeid: The id of the line-item or the line-item that should be removed.
Examples:
Add and then remove a product line-item from the cart.
twig{% do services.cart.products.add(hook.ids.get('p1')) %} {% do services.cart.products.remove(hook.ids.get('p1')) %}
Shopware\Core\Checkout\Cart\Facade\StatesFacade
The StatesFacade allows access to the current cart states and functions.
add()
add()allows you to add one or multiple states as string values to the cart.This can be useful to check if your script did already run and did some manipulations to the cart.
Arguments:
stringstates: One or more strings that will be stored on the cart.
remove()
remove()removes the given state from the cart, if it existed.Arguments:
stringstate: The state that should be removed.
has()
has()allows you to check if one or more states are present on the cart.Returns
boolReturns true if at least one of the passed states is present on the cart, false otherwise.
Arguments:
stringstates: One or more strings that should be checked.
get()
get()returns all states that are present on the cart.Returns
arrayAn array containing all current states of the cart.