Skip to content

Purchasables ​

Type
Class
Namespace
craft\commerce\services
Inherits
craft\commerce\services\Purchasables » yii\base\Component » yii\base\BaseObject
Implements
yii\base\Configurable
Since
2.0

Product type service.

View source

Public Properties ​

PropertyDescription
allPurchasableElementTypesarray, string[]
behaviorsyii\base\Behavior – List of behaviors attached to this component.

allPurchasableElementTypes ​

Type
array, string[]
Default value
null

View source

Public Methods ​

MethodDescription
__call()Calls the named method which is not a class method.
__clone()This method is called after the object is created by cloning an existing one.
__construct()Constructor.
__get()Returns the value of a component property.
__isset()Checks if a property is set, i.e. defined and not null.
__set()Sets the value of a component property.
__unset()Sets a component property to be null.
attachBehavior()Attaches a behavior to this component.
attachBehaviors()Attaches a list of behaviors to the component.
behaviors()Returns a list of behaviors that this component should behave as.
canGetProperty()Returns a value indicating whether a property can be read.
canSetProperty()Returns a value indicating whether a property can be set.
className()Returns the fully qualified name of this class.
deletePurchasableById()Delete a purchasable by its ID.
detachBehavior()Detaches a behavior from the component.
detachBehaviors()Detaches all behaviors from the component.
ensureBehaviors()Makes sure that the behaviors declared in behaviors() are attached to this component.
getAllPurchasableElementTypes()Returns all available purchasable element classes.
getBehavior()Returns the named behavior object.
getBehaviors()Returns all behaviors attached to this component.
getPurchasableById()Get a purchasable by its ID.
hasEventHandlers()Returns a value indicating whether there is any handler attached to the named event.
hasMethod()Returns a value indicating whether a method is defined.
hasProperty()Returns a value indicating whether a property is defined for this component.
init()Initializes the object.
isPurchasableAvailable()
isPurchasableShippable()
off()Detaches an existing event handler from this component.
on()Attaches an event handler to an event.
trigger()Triggers an event.
updateStoreStockCache()Updated the cached stock value for the purchasable in a store.

deletePurchasableById() ​

Delete a purchasable by its ID.

View source

Arguments ​

  • $purchasableId

Throws ​

getAllPurchasableElementTypes() ​

Returns all available purchasable element classes.

View source

Returns ​

string[] – The available purchasable element classes.

getPurchasableById() ​

Get a purchasable by its ID.

View source

Arguments ​

Returns ​

craft\commerce\base\PurchasableInterface, null

Throws ​

isPurchasableAvailable() ​

Since
3.3.1

View source

Arguments ​

isPurchasableShippable() ​

Since
3.3.2

View source

Arguments ​

updateStoreStockCache() ​

Updated the cached stock value for the purchasable in a store.

View source

Arguments ​

Returns ​

void

Throws ​

Events ​

EVENT_PURCHASABLE_AVAILABLE ​

Type
craft\commerce\events\PurchasableAvailableEvent

The event that is triggered when the availability of a purchasables is checked.

This example stop users of a certain group from having the purchasable be available to them in their order.

php
use craft\commerce\events\PurchasableAvailableEvent;
use craft\commerce\services\Purchasables;
use yii\base\Event;

Event::on(
    Purchasables::class,
    Purchasables::EVENT_PURCHASABLE_AVAILABLE,
    function(PurchasableAvailableEvent $event) {
        if($order && $user = $order->getUser()){
            $event->isAvailable = $event->isAvailable && !$user->isInGroup(1); // Group ID 1 not allowed to have purchasable in the cart.
        }
    }
);

EVENT_PURCHASABLE_SHIPPABLE ​

Type
craft\commerce\events\PurchasableShippableEvent

The event that is triggered when determining whether a purchasable may be shipped.

This example prevents the purchasable from being shippable in a specific user group's orders:

php
use craft\commerce\events\PurchasableShippableEvent;
use craft\commerce\services\Purchasables;
use yii\base\Event;

Event::on(
    Purchasables::class,
    Purchasables::EVENT_PURCHASABLE_SHIPPABLE,
    function(PurchasableShippableEvent $event) {
        if($order && $user = $order->getUser()){
            $event->isShippable = $event->is && !$user->isInGroup(1);
        }
    }
);

EVENT_REGISTER_PURCHASABLE_ELEMENT_TYPES ​

Type
craft\events\RegisterComponentTypesEvent

The event that is triggered for registration of additional purchasables.

This example adds an instance of MyPurchasable to the event object’s types array:

php
use craft\events\RegisterComponentTypesEvent;
use craft\commerce\services\Purchasables;
use yii\base\Event;

Event::on(
    Purchasables::class,
    Purchasables::EVENT_REGISTER_PURCHASABLE_ELEMENT_TYPES,
    function(RegisterComponentTypesEvent $event) {
        $event->types[] = MyPurchasable::class;
    }
);