Checkers¶

Danger

We’re sorry but this documentation section is outdated. Please have that in mind when trying to use it. You can help us making documentation up to date via Sylius Github. Thank you!

ItemCountRuleChecker¶

This class checks if item count exceeds (or at least is equal) the configured count. An example about how to use it is on RuleCheckerInterface.

Note

This checker implements the RuleCheckerInterface.

ShippingMethodEligibilityChecker¶

This class checks if shipping method rules are capable of shipping given subject.

<?php

use Sylius\Component\Shipping\Model\Rule;
use Sylius\Component\Shipping\Model\ShippingMethod;
use Sylius\Component\Shipping\Model\ShippingCategory;
use Sylius\Component\Shipping\Model\Shipment;
use Sylius\Component\Shipping\Model\ShipmentItem;
use Sylius\Component\Shipping\Model\ShippingMethodTranslation;
use Sylius\Component\Shipping\Model\RuleInterface;
use Sylius\Component\Shipping\Checker\ItemCountRuleChecker;
use Sylius\Component\Shipping\Checker\ShippingMethodEligibilityChecker;
use Sylius\Component\Shipping\Checker\RuleCheckerInterface;
use Sylius\Component\Registry\ServiceRegistry;

$rule = new Rule();
$rule->setConfiguration(array('count' => 0, 'equal' => true));
$rule->setType(RuleInterface::TYPE_ITEM_COUNT);

$shippingCategory = new ShippingCategory();
$shippingCategory->setName('Regular');

$hippingMethodTranslate = new ShippingMethodTranslation();
$hippingMethodTranslate->setLocale('en');
$hippingMethodTranslate->setName('First method');

$shippingMethod = new ShippingMethod();
$shippingMethod->setCategory($shippingCategory);
$shippingMethod->setCurrentLocale('en');
$shippingMethod->setFallbackLocale('en');
$shippingMethod->addTranslation($hippingMethodTranslate);

$shippingMethod->addRule($rule);

$shippable = new ShippableObject();
$shippable->setShippingCategory($shippingCategory);

$shipmentItem = new ShipmentItem();
$shipmentItem->setShippable($shippable);

$shipment = new Shipment();
$shipment->addItem($shipmentItem);

$ruleChecker = new ItemCountRuleChecker();

$ruleCheckerRegistry = new ServiceRegistry(RuleCheckerInterface::class);
$ruleCheckerRegistry->register(RuleInterface::TYPE_ITEM_COUNT, $ruleChecker);

$methodEligibilityChecker = new ShippingMethodEligibilityChecker($ruleCheckerRegistry);

///returns true, because quantity of shipping item in shipment is equal as count in rule's configuration
$methodEligibilityChecker->isEligible($shipment, $shippingMethod);

// returns true, because the shippable object has the same category as shippingMethod
// and shipping method has default category requirement
$methodEligibilityChecker->isCategoryEligible($shipment, $shippingMethod);

Caution

The method ->register() throws InvalidArgumentException.

Note

This model implements the ShippingMethodEligibilityCheckerInterface.