ModelProducts module
ProductVariant
A model in the Products module, with 50 members for templates, 41 API properties and 59 members for admin templates.
Templates view
Properties 46
Take no arguments.
-
#
__toString()Templates only -
string - Returns the rendered HTML when the model is used in a string context.
-
#
getChildren() -
?Collection -
#
getFullSlug() -
string - Gets the effective full slug for the container by forwarding to its default description. All four UrlAddressable methods forward instead of using the
urlAddressableModeldefaults, because a container's URL is entirely its default description's URL: the custom URL lives on the description entity, not on the container entity, so the trait'sresolveCustomUrl()would check the container's own entity — which has nogetCustomUrl()— and silently drop the description's custom URL. The description itself usesurlAddressableModel, so the guarded custom-URL resolution still happens exactly once, one level down. That is why this trait does notuse urlAddressableModel: every method it would contribute is replaced here. -
#
getFullPath() -
string - Gets the effective full path for the container by forwarding to its default description
-
#
getOriginalFullSlug() -
string - Gets the original full slug for the container by forwarding to its default description
-
#
getOriginalFullPath() -
string - Gets the original path for the container without any custom urls applied by forwarding to its default description
-
#
getOriginalPath() -
string - It's an alias and deprecated! Directly use
getOriginalFullPath()instead. -
#
getId() -
?int -
#
isPurchasable() -
bool -
#
getAvailableFrom() -
?DateTime -
#
getAvailableTill() -
?DateTime -
#
getPublished() -
?DateTime -
#
getDescriptions() -
?Collection<ProductDescription> -
#
getPricings() -
?Collection<ProductPricing> -
#
getWidth() -
?string -
#
getHeight() -
?string -
#
getDepth() -
?string -
#
getWeight() -
?string -
#
getAvailableQuantity() -
?int -
#
getInventoryTemplate() -
?string -
#
getStocks() -
?Collection<Stock> -
#
getInterests() -
?Collection<ProductInterest> -
#
getExternalId() -
?string -
#
isHierarchicalModel()Not in API & Jobs -
bool - Check whether a model is a hierarchical model, i.e. can have children
-
#
getHtml()Templates only -
string - Gets the rendered HTML for the record using its layout template. Delegates to the default description, which holds the layout.
Methods 4
Take arguments. The API serialises only getters that need none.
-
#
getProductCategories(?array $criteria, string $sort, string $direction) -
?Collection - Returns the categories of the main product (fetched through its category elements).
-
#
getPricingForCurrency(Currency $currency) -
?ProductPricing - Returns the pricing for a specific currency. Returns nothing if there is no pricing set for the given currency.
-
#
getFinalPrice(?Currency $currency) -
?string - Calculates the final price for the product based on the provided pricing. If *base price* of the product is
0.00, such a product could be added to the cart. If other prices (e.g. *special price*) are0, they are ignored, and *base price* is returned (that could be0.00).
No members match the filter.
API & Jobs view
API & JobsEach property is a key in REST API responses and job payloads. Its name is the template getter without get, is or has. Methods that need arguments are not available here.
Properties 41
Read-only values on the record.
-
#
children -
?Collection -
#
fullSlug -
string - Gets the effective full slug for the container by forwarding to its default description. All four UrlAddressable methods forward instead of using the
urlAddressableModeldefaults, because a container's URL is entirely its default description's URL: the custom URL lives on the description entity, not on the container entity, so the trait'sresolveCustomUrl()would check the container's own entity — which has nogetCustomUrl()— and silently drop the description's custom URL. The description itself usesurlAddressableModel, so the guarded custom-URL resolution still happens exactly once, one level down. That is why this trait does notuse urlAddressableModel: every method it would contribute is replaced here. -
#
fullPath -
string - Gets the effective full path for the container by forwarding to its default description
-
#
originalFullSlug -
string - Gets the original full slug for the container by forwarding to its default description
-
#
originalFullPath -
string - Gets the original path for the container without any custom urls applied by forwarding to its default description
-
#
id -
?int -
#
purchasable -
bool -
#
availableFrom -
?DateTime -
#
availableTill -
?DateTime -
#
published -
?DateTime -
#
descriptions -
?Collection<ProductDescription> -
#
pricings -
?Collection<ProductPricing> -
#
width -
?string -
#
height -
?string -
#
depth -
?string -
#
weight -
?string -
#
availableQuantity -
?int -
#
inventoryTemplate -
?string -
#
stocks -
?Collection<Stock> -
#
interests -
?Collection<ProductInterest> -
#
externalId -
?string
No members match the filter.
Admin view
AdminAvailable in cdna-admin templates. Copy an admin template into your site repository to change how this record is edited.
Properties 55
Take no arguments.
-
#
getChildren() -
?Collection -
#
getFullSlug() -
string - Gets the effective full slug for the container by forwarding to its default description. All four UrlAddressable methods forward instead of using the
urlAddressableModeldefaults, because a container's URL is entirely its default description's URL: the custom URL lives on the description entity, not on the container entity, so the trait'sresolveCustomUrl()would check the container's own entity — which has nogetCustomUrl()— and silently drop the description's custom URL. The description itself usesurlAddressableModel, so the guarded custom-URL resolution still happens exactly once, one level down. That is why this trait does notuse urlAddressableModel: every method it would contribute is replaced here. -
#
getFullPath() -
string - Gets the effective full path for the container by forwarding to its default description
-
#
getOriginalFullSlug() -
string - Gets the original full slug for the container by forwarding to its default description
-
#
getOriginalFullPath() -
string - Gets the original path for the container without any custom urls applied by forwarding to its default description
-
#
getOriginalPath() -
string - It's an alias and deprecated! Directly use
getOriginalFullPath()instead. -
#
getImageRootTargetFolderPath()Admin only -
string - Retrieves the *root* target folder path for uploaded images. This is usually the root entity path without the ID or slug sub folder.
-
#
getImageTargetFolderPath()Admin only -
string - Retrieves the target folder path for uploaded images. Images will be moved to this path after the upload has been processed.
-
#
getId() -
?int -
#
isPurchasable() -
bool -
#
getAvailableFrom() -
?DateTime -
#
getAvailableTill() -
?DateTime -
#
getPublished() -
?DateTime -
#
getDescriptions() -
?Collection<ProductDescription> -
#
getPricings() -
?Collection<ProductPricing> -
#
getWidth() -
?string -
#
getHeight() -
?string -
#
getDepth() -
?string -
#
getWeight() -
?string -
#
getAvailableQuantity() -
?int -
#
getInventoryTemplate() -
?string -
#
getStocks() -
?Collection<Stock> -
#
getInterests() -
?Collection<ProductInterest> -
#
getExternalId() -
?string -
#
isHierarchicalModel()Not in API & Jobs -
bool - Check whether a model is a hierarchical model, i.e. can have children
-
#
getAvailableWarehouses()Admin only -
array - Returns the list of warehouses sorted by name and indexed by ID
-
#
getStockQuantities()Admin only -
array - Fetches stock quantities (indexed by warehouse ID) and keeps current value, value (submitted by user) and original value (value fetched as current on HTML form rendering)
Methods 4
Take arguments. The API serialises only getters that need none.
-
#
getProductCategories(?array $criteria, string $sort, string $direction) -
?Collection - Returns the categories of the main product (fetched through its category elements).
-
#
getPricingForCurrency(Currency $currency) -
?ProductPricing - Returns the pricing for a specific currency. Returns nothing if there is no pricing set for the given currency.
-
#
getFinalPrice(?Currency $currency) -
?string - Calculates the final price for the product based on the provided pricing. If *base price* of the product is
0.00, such a product could be added to the cart. If other prices (e.g. *special price*) are0, they are ignored, and *base price* is returned (that could be0.00).
No members match the filter.